例えば、
プログラムAでソケットを作成します。
そのソケットの構造体をプログラムBで取得して使用する方法というのが、
以外にもまだ知りませんでした。
ネット調べてみてもプロセス間通信などの記事ばかりで、
他プロセスで作成して、まだcloseされていないソケットを別プロセスから
取得する方法というのが見つかりませんでした。
ソケットの構造体というものもファイルのようなシステム全体でグローバルにディスクリプタを通してハンドルできるものだと思うので、
ファイルのように一旦作成したソケットはどこからでも使うことができるように思います。
よろしくお願いいたします。
追---
1つのプログラム内でfork() すれば、socket()の返り値であるfdをグローバル変数などに入れて
おけばそれをfork()先プロセスで使用すればいいだけだと思うのですが、全く別のプログラムという別プロセスではどのようにすればいいのでしょうか。
追---
よく調べてみますと、
sendmsg()のSCM_RIGHTSを使用して、目的のプロセスにfd群を渡して...する方法が一般的なような感じのようでした。
これを見るに、何と言いますか、socket()で作成される構造体というのはファイルのように明確に名前がないので、ファイルのようにどこからでもアクセスは可能なものの、ファイルのように
open(名前,..)みたいに明確に目的物を指す方法が無いのではないかと思いました。
だから、全くfork()もしていないプロセスから無名のものを言い当てることができないから、
そのヒント(fd)をsocket()したプロセスから送ってやる必要があるのだと...
何かそのような補助が無くてもすっと取れるようなファイルのような機構があってもおかしくないと思うのですが、何か理由でもあるのでしょうか...
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/07 09:19