2012-05-01 20 views
0

私はコマンドを実行する必要がありますが、それは終了するまでアプリケーションをロックしません。system()のように機能します。これを行う方法?どんな助けもありがとうございます。前もって感謝します。コマンドを実行する方法とアプリケーションの終了を待つことはありませんか?

+1

親プロセスが終了すると、子プロセスにSIGHUPが送信されることに注意してください。子プロセスを継続したい場合、シグナル処理を使用してSIGHUPを無視するか、nohupを使用してプログラムを実行する必要があります。 – cdarke

答えて

7

fork()を使用して新しいプロセスを作成し、exec*()を使用して新しいアプリケーションに置き換えます。

2
pid_t pid; 

if ((pid = fork()) < 0) 
    ...fork failed... 
else if (pid == 0) 
{ 
    ...create command line in array of char pointers argv... 
    ...sort out I/O -- redirect stdin from /dev/null?... 
    execvp(argv[0], argv); 
    ...report exec failed on stderr... 
    _exit(126); 
} 
...parent process...gets on with life... 
関連する問題