2021-12-02

すでに起動したプロセスの出力をリダイレクト

起動済みのプロセスの出力のリダイレクトを変更する方法をメモする。 特に、バックグラウンドでプロセスを起動した後、出力を/dev/nullへリダイレクトしたくなることがある。

GDBでプロセスにアタッチする。

gdb -p 874046

以下のようにdup2を使う。
p (int)dup2((int)open("/dev/null", 00000, 0000), 0)
p (int)dup2((int)open("/dev/null", 02101, 0777), 1)
p (int)dup2((int)open("/dev/null", 02101, 0777), 2)
detach
quit

第2引数 (flags) のコードは、主要なものは以下の通り。
O_RDONLY00
O_WRONLY01
O_RDWR02
O_CREAT0100
O_APPEND02000