Не могу запустить два раза execl - PullRequest
0 голосов
/ 13 марта 2012

Если я пытаюсь выполнить эти команды:

int main(int argc, char* argv[])
{
    execl("/bin/echo","echo","list ","of", "files:\n",NULL);
    execl("/bin/ls","ls","-al",NULL);
    return 0;
}

Только первая выполняется, почему?

Ответы [ 3 ]

4 голосов
/ 13 марта 2012

execl ЗАМЕНЯЕТ текущий процесс - это не подпрограмма. Вместо этого вы можете попробовать system().

4 голосов
/ 13 марта 2012

Потому что, как только вы запустите exec*() , ваше приложение перестанет существовать . Если вы хотите запустить более одного внешнего процесса, вам нужно будет fork().

1 голос
/ 27 марта 2012

Сначала нужно выполнить форк.

Попробуйте запустить

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;
}
...