nahrada volani system() pomoci exec s presmerovanim

Milan Kopacka mkop5230 na ss1000.ms.mff.cuni.cz
Pondělí Duben 27 21:36:23 CEST 1998


On Mon, 27 Apr 1998, Petr Skoda wrote:

>A ted prosba - umel by nekdo poradit jak se zbavit toho volani system()
>pomoci shellu a presmerovani aby se volala jen ta binarka ( ale neni mi
>jasne jak vnutit funkci exec() jako argument to presmerovani ),
>nebo jeste lepe nejake korektni reseni pri zachovani moznosti vytvor
>soubor s prikazy zevne, vykonej, vymaz. 


Jestli tomu dobre rozumim, potrebujete spustit radic a pockat
az dobehne.

volani

>          system("/usr/local/bin/radic </home/nassystem/comfile");

Nahradte necim jako

if (fork()==0){
  int f=open("/home/nassystem/comfile", O_RDONLY);
  close(0);
  dup(f);
  close(f);
  execl("/usr/local/bin/radic","radic",NULL);
}
wait(NULL);


Samozrejme si osetrete navratove chybove kody.

  Milan Kopacka





Další informace o konferenci Linux