Go言語で子プロセスとその子孫プロセスを完全に終了させる方法
問題の背景
Goのexec.Commandを使用してプロセスを起動する際、主プロセスは正常に終了するものの、起動した子プロセスの子プロセス(「孫プロセス」)がまだ実行されているという厄介な問題に直面しました。
mcpRunner := fmt.Sprintf("\"%s %s\"", s.Config.Command, strings.Join(s.Config.Args, " "))
cmd := exec.Command("/bin/sh", "-c",
fmt.Sprintf("%s --st ...
8月16日 17:22 投稿
Linuxコマンドのkillall
killall [オプション] [-signal(シグナル)] [name]
killallは指定された名前のすべてのプロセスにシグナルを送信します。シグナルが指定されていない場合、デフォルトでSIGTERMが送信されます。シグナルは名前または数字で指定可能ですが、シグナル0(プロセス存在確認)は数字でのみ指定可能です。
コマンド名にスラッシュ(/)が含まれる場合、その特定ファイルを実行中 ...
8月10日 03:34 投稿
Linuxプロセス間通信:メッセージキューとシグナル制御の設計パターン
システムVメッセージキューによる双方向通信の実装
プロセス間で非同期にデータを交換する際、メッセージキューは排他制御と順序保証を簡素化します。以下の例では、ftokで生成した一意なキーを用いて共有キューを確保し、親子プロセスが異なるメッセージタイプ(10と20)を振り分けて相互にやり取りする設計を示します。文字列の末尾処理にはstrcspnを用い、改行文字の安 ...
8月6日 17:46 投稿