fork()
を使用して子プロセスを作成します。子プロセスが30秒以内に実行を完了できない場合、親プロセスはどのように子プロセスを強制終了できますか?子プロセスが最大30秒間実行できるようにしたい。 30秒以上かかると、親プロセスがそれを強制終了します。あなたはそれをする考えがありますか?親プロセスによって子プロセスを強制終了するにはどうすればいいですか?
18
A
答えて
22
それにSIGTERMまたはSIGKILLを送信:とき、それはないでしょうSIGKILLがためで、一方
http://en.wikipedia.org/wiki/SIGKILL
http://en.wikipedia.org/wiki/SIGTERM
SIGTERMは、丁寧であり、それは行く前にプロセスをクリーンアップすることができます>聞く:)シェル(manページ:http://unixhelp.ed.ac.uk/CGI/man-cgi?kill)から
例
殺す-9 pidをCで
、あなたは、killシステムコールを使用して同じことを行うことができます。
kill(pid, SIGKILL);
次のマニュアルページを参照してください:フォーク、親プロセスではhttp://linux.die.net/man/2/kill
1
を()の戻り値は、子プロセスのプロセスIDです。子プロセスを終了する必要があるときのためにどこかで価値があるもの。 fork()は子プロセスでゼロ(0)を返します。
子プロセスを終了する必要がある場合は、fork()によって返されたプロセスIDと配信するシグナル(たとえばSIGTERM)とともにkill(2)関数を使用します。
残っているゾンビを防ぐために、子プロセスでwait()を呼び出すことを忘れないでください。
7
はこのような何かを試してみてください:
#include <signal.h>
pid_t child_pid = -1 ; //Global
void kill_child(int sig)
{
kill(child_pid,SIGKILL);
}
int main(int argc, char *argv[])
{
signal(SIGALRM,(void (*)(int))kill_child);
child_pid = fork();
if (child_pid > 0) {
/*PARENT*/
alarm(30);
/*
* Do parent's tasks here.
*/
wait(NULL);
}
else if (child_pid == 0){
/*CHILD*/
/*
* Do child's tasks here.
*/
}
}
関連する問題
- 1. プロセスIDを取得してnohupプロセスを強制終了するにはどうすればいいですか?
- 2. C++でプロセスを強制終了して再起動するにはどうすればよいですか?
- 3. プログラムのすべてのプロセスを強制終了するにはどうすればよいですか?
- 4. 子スレッドによって開始されたプロセスを強制終了するにはどうすればいいですか?
- 5. node.jsで開いているプロセスを強制終了するには?
- 6. モバイルアプリを強制終了するにはどうすればよいですか?
- 7. ctrl + Cまたはctrl + Zで親プロセスとその子プロセスを強制終了する方法
- 8. Windows 2000 Server上のサービスによって開始されたプロセスを強制終了するにはどうすればよいですか?
- 9. プロセスが強制的に強制終了された場合の終了コード
- 10. ctrl + Cでシェルスクリプトによって開かれたすべてのプロセスを強制終了するには?
- 11. 名前でプロセスを強制終了するには? (Win32 API)
- 12. Android:強制的にソフトキーボードを強制終了するにはどうすればよいですか?
- 13. スクリプトでのプロセスの強制終了
- 14. プロセスを強制終了する前にgmon.outを保存する
- 15. 実行中のPythonプロセスを強制終了するには?
- 16. 特定のクロムタブ/プロセスを強制終了するには
- 17. 強制終了アプリなしでAndroidでデーモンスレッドを終了するにはどうすればいいですか?
- 18. プロセスを強制終了しないでください
- 19. 子ノードプロセスが親ノードプロセスで強制終了されないようにするにはどうすればよいですか?
- 20. 子プロセスが実行されているときに親プロセスから終了します。
- 21. .EXEファイルのバージョン番号に基づいてプロセスを強制終了するにはどうすればよいですか?
- 22. ホットスポットクラッシュ時にJavaプロセスを強制終了する方法
- 23. Powershell ISEはプロセスを強制終了してフリーズします
- 24. スレッドによって制御されるプロセスを停止するにはどうすればよいですか?
- 25. PHP - pcntl_forkによって開始された子プロセスの終了
- 26. mysqldプロセスを強制終了できますか?
- 27. Mercurial(hg)プロセスを強制終了できますか?
- 28. KeyboardInterruptでプロセスが終了しないようにするには?
- 29. プロセスを終了するときにlogout()を実行するにはどうすればよいですか?
- 30. WiXからプロセスを強制終了する方法
私はアラームをリセットする必要があります( 'アラーム(0)')親部品で子供が30秒前に実行した場合? – miraj
@mirajこんにちは、あなたは、アラームをキャンセルするソリューションを持っていますか?私は同様の質問がありますが、ソケットクライアント/サーバーを作成し、ソケットクライアントが接続を要求するときにサーバーが子プロセスをforkしますが、子プロセスが1分以内にメッセージを送信しない場合、サーバーは子プロセスを終了します。クライアントがサーバーにメッセージを送信すると、タイマーは再び1分にリセットされます。 –