-1

如果我尝试执行这些命令:

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

只有第一个被执行,为什么?

4

3 回答 3

4

因为一旦你运行exec*() 你的应用程序就会停止现有的. 如果要运行多个外部进程,则需要fork().

于 2012-03-12T20:25:38.683 回答
4

execl 替换当前进程——它不是一个子程序。您可以尝试system()改用。

于 2012-03-12T20:28:34.947 回答
1

你需要先分叉。

尝试运行

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;
}
于 2012-03-27T14:06:24.727 回答