/dev/null にリダイレクトされた実行中のプロセスの標準出力をキャプチャする方法

/dev/null にリダイレクトされた実行中のプロセスの標準出力をキャプチャする方法

にリダイレクトするstdout実行中のプロセスをキャプチャしたいと思います。システムコールを試しましたが、fd "1"を閉じると、利用可能な最も低いfd番号であるため、別のファイルに割り当てられます。stdout/dev/nullfcntl()

与えられたfdをロックして他のファイルに再割り当てする方法についてのアイデアはありますか?

答え1

procファイルシステムを使ってキャプチャできると思います。

$ cat /proc/<PID>/fd/1

答え2

私はあなたがgdbこれを行うことができると信じています。回答を見るこの電卓の問題。こんな言葉から出るかもしれないけどこのブログ投稿

答え3

リダイレクトを使用できます(https://github.com/jerome-pouiller/reredirect/)。

reredirect -m /dev/null <PID>

後で、次のコマンドを使用してプロセスの初期出力を復元できます。

reredirect -N -O <M> -E <N> <PID>

(以前に開始されたリダイレクトによって提供されます)<M><N>

reredirectは、README他のコマンドにリダイレクトする方法も説明します。

関連情報