2012-01-09 15 views
1

私はを試すfork()lsコマンドを実行する子。Cのexeclp()は実行後にプロンプ​​トを返さない

#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h> 
#include <stdlib.h> 

int main() { 

    if (fork()==0){ //child 
     execlp("ls", "ls", "-l", (char*)0); 
     exit(1); 
    } 

    fflush(stderr); //doesn't fix my problem 
    fflush(stdout); //doesn't fix my problem 
    exit(0); 
} 

これはうまく動作しますが、カーソルが子の実行後にスタックします。 Enterキーを押して端末を戻す必要があります。何故ですか?

答えて

2

子プロセスが完了する前にメインプロセスが終了します。 wait()またはwaitpid()を使用して子プロセスが終了するのを待ちます。

+0

ありがとうございました。それはそれを解決しました:) – Pithikos

+0

親と子が出た場合、どのように子のステータスを取得できますか?私はwaitpidを使用する必要がありますか?どこで使うことができますか? – kapilddit

関連する問題