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