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. 子プロセス内のSIGINTが親プロセスに伝播し、親プロセスを強制終了させないようにするにはどうすればよいですか?
- 2. プロセスIDを取得してnohupプロセスを強制終了するにはどうすればいいですか?
- 3. C++でプロセスを強制終了して再起動するにはどうすればよいですか?
- 4. プログラムのすべてのプロセスを強制終了するにはどうすればよいですか?
- 5. すべての子プロセスを強制終了しますが、親プロセスは終了しません。
- 6. www-dataプロセスを強制終了するにはどうすればよいですか?
- 7. Windowsでexecによって実行される子プロセスを強制終了するにはどうすればよいですか?
- 8. Powershellでプロセスを強制終了するにはどうすればいいですか?
- 9. node.exeの子プロセスを強制終了するには?
- 10. 子スレッドによって開始されたプロセスを強制終了するにはどうすればいいですか?
- 11. 複数のプロセスを強制終了するにはどうすればいいですか?
- 12. 子プロセスを持つRubyでフォークプロセスを強制終了する
- 13. node.jsで開いているプロセスを強制終了するには?
- 14. モバイルアプリを強制終了するにはどうすればよいですか?
- 15. ctrl + Cまたはctrl + Zで親プロセスとその子プロセスを強制終了する方法
- 16. Windows 2000 Server上のサービスによって開始されたプロセスを強制終了するにはどうすればよいですか?
- 17. ctrl + Cでシェルスクリプトによって開かれたすべてのプロセスを強制終了するには?
- 18. npm子プロセスを強制終了する方法
- 19. プロセスが強制的に強制終了された場合の終了コード
- 20. 再起動するプロセスを強制終了するには? (Forever)
- 21. 名前でプロセスを強制終了するには? (Win32 API)
- 22. Jenkinsジョブから開始された子プロセスを終了するにはどうすればよいですか?
- 23. Windowsでのログアウト時にプロセスが強制終了されないようにするにはどうすればよいですか?
- 24. Cでは、親プロセスが終了すると、子プロセスは自動的に終了しますか?
- 25. Android:強制的にソフトキーボードを強制終了するにはどうすればよいですか?
- 26. 実行中のプロセスを強制的に強制終了するには?
- 27. スクリプトでのプロセスの強制終了
- 28. プロセスをアイドル状態にしてから、Windowsバッチファイルからプロセスを終了するまで、プロセスを実行するにはどうすればよいですか。
- 29. プロセスを強制終了する前にgmon.outを保存する
- 30. 特定のクロムタブ/プロセスを強制終了するには
私はアラームをリセットする必要があります( 'アラーム(0)')親部品で子供が30秒前に実行した場合? – miraj
@mirajこんにちは、あなたは、アラームをキャンセルするソリューションを持っていますか?私は同様の質問がありますが、ソケットクライアント/サーバーを作成し、ソケットクライアントが接続を要求するときにサーバーが子プロセスをforkしますが、子プロセスが1分以内にメッセージを送信しない場合、サーバーは子プロセスを終了します。クライアントがサーバーにメッセージを送信すると、タイマーは再び1分にリセットされます。 –