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é?

È stato utile?

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
scroll top