0

以下程序调用fork()并打算产生一个孤立进程。它可以正常工作,并且孤儿进程被进程收割init(由 command 检查ps)。但是为什么 bash 似乎在等待输入?

    ...    
    if ((pid = fork() < 0) {
        err_sys("fork error");    /* err_sys is declared in apue.h */
    } else if (pid == 0) {
        /* sleep to ensure that parent process terminates first */
        printf("child process: %d\n", getpid());
        sleep(2);
        exit(0);
    }
    printf("parent process\n");
    exit(0);
}

执行程序

$ ./a.out
parent process
$ child process: 4787
_    <= shell stops here until I hit Ctrl-C
        (the underscore is just for demostration)

注意:我使用的是 Ubuntu 11.10。

4

1 回答 1

3

当 shell 显示提示时,它不再像往常一样等待。问题(如果你可以这么说的话)是子进程打印一些输出,然后是换行符。此换行符已打印,但 shell 不打印新提示。就这样。只需像往常一样编写命令,它就会起作用。

于 2013-10-01T11:49:48.647 回答