[linux-users: 109043] Re: dup2は何処まで有効
Kiyokazu SUTO
suto @ ks-and-ks.ne.jp
2018年 2月 6日 (火) 12:02:10 JST
Citation (with leading "> " of each line) from article:
<20180206110033.C6B4.36C89D1D @ gaia.eonet.ne.jp>
by Yamamoto <n_yama @ gaia.eonet.ne.jp> :
> Cで標準出力をファイル出力するようにdup2関数で複製したのですが、この複製はいつま
> で有効になるのでしょうか?
>
> forkでファイル出力したい子プロセス起動前に設定して起動していますが。
> 終了もしくは、異常終了(kill)したら、標準出力に戻したいのですが、自動で戻るのでしょ
> うか?
子プロセスが死んだ後、dup2した親プロセス側で元に戻るか、ということなら、
戻りません。
戻って欲しいなら、(1) 親プロセスで1にdup2する前に、1を別のファイルディ
スクリプター(fd)にdup2して保存しておいてから、fork後に保存しておいたfd
を1にdup2、か、(2) fork後に子プロセスで1にdup2、でしょう。
普通のスタイルとしては(2)ですかね。
--
須藤 清一 <suto @ merry.xmath.ous.ac.jp>
linux-users メーリングリストの案内