0

私はハンドルの継承の考え方を理解しようとしてきました.Unixと比較して、Windowsではアプリケーションメモリが共有されます。

Windows では fork() などの機能が提供されていないため、createprocess とハンドルを読み込んでいます。

新しいプロセスが親から渡されたハンドルをどのように読み取ることができるのか、まだ頭に浮かびません。私はmsdnのドキュメントを見てきましたが、ここではReadFileが答えのようですが、読み方がわかりません。

私がやろうとしているのは、サーバーがソケットを渡すクライアント/サーバーです。Winsock1 を使用しているため、WSAduplicate はオプションではありません。ソケットを渡すことはできないと読みましたが、複製することはできます。( http://tangentsoft.net/wskfaq/articles/passing-sockets.html )

簡単に言うと、ハンドル値 (例: 0x0000070) をコマンド ライン引数として渡すとします。それを有効なハンドル (ソケットなど) に変換するにはどうすればよいですか。

乾杯、

**更新アプローチが理想的ではないことはわかっており、スレッドはこれに取り組むためのはるかに優れた方法です。しかし、スレッドの代わりに子プロセスを作成することが明示的に要求されています。

4

2 に答える 2

0

継承されたハンドルの整数値は、親プロセスと同じです。したがって、整数をハンドルに変換するだけです。

HANDLE h = (HANDLE) handle_value;
于 2013-09-13T04:53:25.950 に答える