dポイントプレゼントキャンペーン実施中!

プロセスAで作成したディスクリプタをプロセスBで使いたいのですが
別プロセスへディスクリプタを関連付けたりって出来るのでしょうか?
Aで作成->Bで使えるようにする->Aをクローズ->Bで使う このようにしたいです。

A 回答 (1件)

fopk() や exec() で渡すというのではなくて、ということですよね?出来るか出来ないかは完全に OS 依存です。



例えば Linux だと、ソケットに限らず任意のファイル記述子を、あるプロセスから別なプロセスに Unix ソケット経由で渡すことができます。ちょっとトリッキーというか、すこしプログラムが面倒ですが。

参考 URL のページ中程、「例をあげると、 Linux はこの補助データのメカニズムを、 Unix ソケット上での拡張エラーや IP オプション、 ファイル・ディスクリプタの受け渡しに利用している」とあります。私は実際に使っています。

もちろん、同じホスト内でのプロセス間での話で、Inet のソケットではできません。

参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man …

この回答への補足

おおお、ソケットでそんな物まで渡せるとは。
OSというか実行環境はcygwin上なので多分行けると思います。ちょっと試してみます。
forkやexecで渡す、と言うのはfork()"前"にディスクリプタを作るとう事ですよね。
今回はforkした"後"に親プロセスで作ったのを子プロセスで使用したいので、最初から
別プロセスという考えでいます。

補足日時:2007/02/15 11:27
    • good
    • 0
この回答へのお礼

すみません、なかなか時間が取れなくて試せていません。
やり方が少しややこしいので、今後ログを読む人の為に解決法を書いて締め切ろうと思っていたのですが、
あまり放置するのは回答して頂いた方に失礼ですのでひとまず終わらせて頂きます。
おそらく回答いただいたUnixソケットの機能の一部を利用する事で解決出来そうです。
お礼が遅くなりすみません。

お礼日時:2007/03/01 20:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!