editace uzivatele
Dan Lukes
dan at obluda.cz
Wed Jan 18 17:16:37 CET 2006
Juraj Lutter napsal/wrote, On 01/18/06 15:08:
> Ukaz nam pliz pouzitie popen() a pclose() na vyrobenie
> jednoducheho wrapperu okolo ``pw'', ktore eliminuje a) aj b).
Co na tom chces, proboha, ukazovat ? Vzdyt to jsou uplne trivialni funkce:
/* -------------------------- */
int
wrap (const char * restrict uname,const char * restrict pwd) {
char *cmd;
FILE *fsh;
asprintf(&cmd, "pw usermod -h 0 '%s'", uname);
fsh=popen(cmd, "w");
free(cmd);
fputs(password, fsh);
return(pclose(fsh));
}
/* -------------------------- */
Pisu to jen "z ruky" a tak to mozna neni uplne dobre - a v kazdem
pripade tam netestuji chybove udalosti (ze se povedl asprintf, popen,
fputs ...) - ale to uz si urcite dodelas.
Jen pro zajimavost (a uplnost) - popen nevola primo zadany program, ale
vola 'sh' a teprve to vola prislusny program. Coz je trochu skoda. Kdyby
to udelali bez sh, ten, kdo by ho tam chtel mit by to zaridil snadno,
takhle ale nelze popen pouzit primo k volani programu bez sh. Na druhou
stranu, neni zas takovy problem se podivat do zdrojaku libc a upravou
vyrobit vlastni popen bez sh ...
Dan
--
Dan Lukes SISAL MFF UK
AKA: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz
More information about the Users-l
mailing list