SO,
有许多类似的问题,但我没有能够使用。我的代码段如下:
for(int j=0; j<N; j++) {
pid_t pid = fork();
if (pid == -1) {
exit(-1); //err
} else if (pid == 0) {//kid
stringstream ss;
ss<<j;
execlp("./sub","sub",ss.str().c_str(),NULL);
exit(0);
} else {
/* parent */
}
}
我在子(.cpp)中执行的代码是:
int main( int argc, char **argv )
{
cout<<argv[i]<<endl;
exit(0);
}
我的输出是这样的:
[terminal prompt '$'] 4
2
3
etc.
有没有办法可以阻止提示在exec调用上显示?为什么它只显示在第一个exec调用上,而不是每个都显示?
答案 0 :(得分:1)
您看到的是shell的正常提示,因为父进程非常快地终止。它不是exec调用的输出。分支进程在父进程终止后打印输出。
您可以在父进程中使用waitpid()
“等待”,直到所有分叉进程终止。