0

次のコードは、ftp 経由でサーバーにファイルをコピーする except スクリプトを呼び出します。

int status;
int child_pnr;  

if((child_pnr = fork())==0)
{
    printf("Childnr %i\n",child_pnr);
    execv("/home/..../ftptest.exp",NULL);

}
else if (child_pnr > 0)
{
    printf("Parent... childnr %i generated\n",child_pnr);
    sleep(7);
}
else
    perror("fork() error");

execv() は実行後に終了するため、この関数の子プロセスを作成しました。sleep(7) がない場合、ftptest.exp が親から中断されるのはなぜですか。

4

1 に答える 1

2

「中断された」とは、親が子が次に行うことを行う前に、子が操作を完了するのを待たないことを意味していると思いますか?

フォークの後、親と子は並行して実行されます。子が完了するまで親を「ハング」させたい場合は、それを行う必要がありますwait

フォークの例をインターネットで参照man waitおよび検索してください。

于 2012-09-10T09:44:52.377 に答える