fork()
我使用第三个程序运行几个execve()
程序。这些程序本来打算做的一切都完成了,但最后第三个程序没有返回......即命令提示符没有出现。
wait()
如果我在调用程序中使用命令,则execve
仅当等待语句的顺序与程序结束的顺序匹配时,程序才会返回execve
。为什么会这样?
这是简化的代码:
int main()
{
int child1,child2,status;
char*newargv1[] = {./xyz",NULL};
char *newargv2[] = {./abc",NULL};
if((child1 = fork())==0)
execve(newargv1[0],newargv1,NULL);
if((child2 = fork())==0)
execve(newargv2[0],newargv2,NULL);
while(wait(&status) != child1);
while(wait(&status) != child2);
}
如果 child1 先完成,它工作正常。./xyz 和./abc 有一些简单的处理和控制到最后。