straceプログラムを終了する最もエレガントな方法

straceプログラムを終了する最もエレガントな方法

straceで何かをキャプチャしてすぐに終了したいです。これにより、プログラムが生き続けることができますstrace ... program 2>&1 | grep --line-buffered ... | read line

strace自体が終了した後にstraceにプログラムを終了させる簡単な方法はありますか?

これが私が解決した方法です。

(strace ... program 2>&1 & echo $! >&3) 3>pid | grep --line-buffered ... | while read line; do
    kill `<pid`
    break
done

しかし、良く見えません。

修正する:

実際の問題は、私が追跡していたプログラムがSIGPIPEを無視していることでした。この問題を解決するきちんとした方法は、SIGPIPEを傍受し、SIGTERMを送信する追加のレイヤーを作成することです。

答え1

grepがサポートしている場合は、grep -m 1 ...それを使用して一致するものを見つけて停止できます。書き込みを続けると仮定すると、パイプが閉じてストレスが終了します。

関連情報