如果我尝试执行这些命令:
int main(int argc, char* argv[])
{
execl("/bin/echo","echo","list ","of", "files:\n",NULL);
execl("/bin/ls","ls","-al",NULL);
return 0;
}
只有第一个被执行,为什么?
答案 0 :(得分:4)
因为只要您运行exec*()
,您的应用就会停止现有。如果您想运行多个外部流程,则需要fork()
。
答案 1 :(得分:4)
execl替换当前进程 - 它不是子例程。您可以尝试使用system()
代替。
答案 2 :(得分: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;
}