2017-04-14 6 views
2

後にクリーンアップを処理します。親Exit/Terminate後に子プロセスをクリーンアップするにはどのようなオプションが必要ですか?私はwin/linux上で走ろうと計画しているので、多少プラットフォームのニュートラルでなければなりません。子は私のようなもので、外出先アプリから別のバイナリを実行したい終了

+0

何について 'cmd.Process.Kill()' –

+0

親子プロセスがあなたのアプリケーション/ another_app_binaryにどのように接続しますか?どちらがどちらですか? another_app_binaryの子プロセスを強制終了していますか?質問に詳しい情報を記入してください。 –

+0

ありがとうございます、質問を更新しました。 –

答えて

1

os/signalパッケージを使用すると、現在のプロセスで強制終了信号を待機することができます。

import (
    "os/exec" 
    "os" 
    "os/signal" 
) 

// ... 

cmd := exec.Command("another_app_binary", "-config", "config.conf") 
cmd.Stdout = os.Stdout 
cmd.Stderr = os.Stderr 
cmd.Run() 

c := make(chan os.Signal, 2) 
signal.Notify(c, os.Interrupt, os.Kill) 
go func() { 
    <-c 
    // cleanup 
    cmd.Process.Kill() 
    os.Exit(1) 
}() 

// ... 
関連する問題