From n_yama @ gaia.eonet.ne.jp Tue Feb 6 11:00:33 2018 From: n_yama @ gaia.eonet.ne.jp (Yamamoto) Date: Tue, 06 Feb 2018 11:00:33 +0900 Subject: [linux-users: 109042] =?iso-2022-jp?b?ZHVwMhskQiRPMj89aCReJEdNLTh6GyhC?= Message-ID: <20180206110033.C6B4.36C89D1D@gaia.eonet.ne.jp> yamamotoです。 些細な事を教えてください。 Cで標準出力をファイル出力するようにdup2関数で複製したのですが、この複製はいつま で有効になるのでしょうか? forkでファイル出力したい子プロセス起動前に設定して起動していますが。 終了もしくは、異常終了(kill)したら、標準出力に戻したいのですが、自動で戻るのでしょ うか? From suto @ ks-and-ks.ne.jp Tue Feb 6 12:02:10 2018 From: suto @ ks-and-ks.ne.jp (Kiyokazu SUTO) Date: 06 Feb 2018 12:02:10 +0900 Subject: [linux-users: 109043] Re: =?iso-2022-jp?b?ZHVwMhskQiRPMj89aCReJEdNLTh6GyhC?= In-Reply-To: <20180206110033.C6B4.36C89D1D@gaia.eonet.ne.jp> (Yamamoto's message of "Tue, 06 Feb 2018 11:00:33 +0900") References: <20180206110033.C6B4.36C89D1D@gaia.eonet.ne.jp> Message-ID: <20180206-120210-4e890.suto@ks-and-ks.ne.jp> Citation (with leading "> " of each line) from article: <20180206110033.C6B4.36C89D1D @ gaia.eonet.ne.jp> by Yamamoto : > Cで標準出力をファイル出力するようにdup2関数で複製したのですが、この複製はいつま > で有効になるのでしょうか? > > forkでファイル出力したい子プロセス起動前に設定して起動していますが。 > 終了もしくは、異常終了(kill)したら、標準出力に戻したいのですが、自動で戻るのでしょ > うか? 子プロセスが死んだ後、dup2した親プロセス側で元に戻るか、ということなら、 戻りません。 戻って欲しいなら、(1) 親プロセスで1にdup2する前に、1を別のファイルディ スクリプター(fd)にdup2して保存しておいてから、fork後に保存しておいたfd を1にdup2、か、(2) fork後に子プロセスで1にdup2、でしょう。 普通のスタイルとしては(2)ですかね。 -- 須藤 清一