【发布时间】:2018-05-13 03:55:55
【问题描述】:
所以我有以下代码:
int main(int argc, char *argv[])
{
int a=1;
while(argv[a] != NULL)
{
printf("\nargv[a] = %s\n", argv[a]);
execl("/bin/ls", "ls", argv[a], NULL);
a++;
}
return 0;
}
我想列出三个文件,分别称为tickets1.lot、tickets2.lot、tickets3.lot。但是当我以这种方式运行程序时:
./code ../input/.lot*
我只列出了第一个:
argv[a] = ../input/tickets1.lot
../input/tickets1.lot
我的 while 循环条件有什么问题吗?
【问题讨论】:
-
我的手册页显示“如果成功,此函数不会返回调用进程。”
-
你想要的是 fork&exec 一个子进程来执行指定的工作,你的父进程应该等待子进程完成,并且随着每个子进程完成,开始下一个(或者你可以一次启动多个孩子)。