我有一个分叉子进程的 C 程序,我从 linux shell 运行它。
我的问题是,在分叉之后,父进程移动到 shell 后台。我希望父进程留在前台。
这是一个简单的例子:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
int i;
for (i = 0; i < 3; i++) {
printf("Before Fork\n");
sleep(1);
}
printf("forking...\n");
pid_t pid = fork();
if (pid) {
// child
printf("Child started and now exiting\n");
exit(EXIT_SUCCESS);
}
// parent
wait(NULL);
for (i = 0; i < 3; i++) {
printf("After Fork\n");
sleep(1);
}
return 0;
}
输出(稍后添加评论)
Before Fork
Before Fork
Before Fork
forking...
Child started and now exiting
After Fork
gregp@gregp-ubuntu:~/fork_example$ After Fork # <--- User returned to shell
After Fork
请注意,在 fork 之后不久,用户返回到 shell 提示符,程序继续在后台运行。我不希望这种情况发生。我希望程序继续在前台运行。
期望的输出(稍后添加评论)
Before Fork
Before Fork
Before Fork
forking...
Child started and now exiting
After Fork
After Fork
After Fork
# Program now exits and user returns to shell
gregp@gregp-ubuntu:~/fork_example$