0

次のプログラムはfork()、孤立したプロセスを呼び出して生成しようとしています。それは適切に動作し、孤立したプロセスはプロセスによって取得されますinit(コマンドで調べられます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

プロンプトを表示するとき、シェルは通常より待機していません。問題は(それを呼び出すことができる場合)、子プロセスが何らかの出力を出力し、その後に改行が続くことです。この改行は出力されますが、シェルは新しいプロンプトを出力しません。それで全部です。いつものようにコマンドを書くだけで動作します。

于 2013-10-01T11:49:48.647 に答える