Impossibile eseguire due volte execl
Domanda
Se provo a eseguire questi comandi:
int main(int argc, char* argv[])
{
execl("/bin/echo","echo","list ","of", "files:\n",NULL);
execl("/bin/ls","ls","-al",NULL);
return 0;
}
Solo il primo viene giustiziato, perché?
Soluzione
EXECL sostituisce il processo corrente: non è una subroutine.Potresti provare a usare invece system()
.
Altri suggerimenti
Perché non appena corri exec*()
l'applicazione smette di esistere.Se si desidera eseguire più di un processo esterno è necessario fork()
.
È necessario prima forchere.
Prova a correre
int main(int argc, char* argv[])
{
if( vfork() == 0 )
execl("/bin/echo","echo","list ","of", "files:\n",NULL);
if( vfork() == 0 )
execl("/bin/ls","ls","-al",NULL);
return 0;
}
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow