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 投稿