簡體   English   中英

等效於C中帶有Windows套接字的dup2

[英]Equivalent of dup2 with windows socket in C

我想通過套接字重定向我的stdin,stdout和stderr。

該代碼在Linux上有效:

dup2(socket, 0);
dup2(socket, 1);
dup2(socket, 2);

但在Windows上則不行,因為套接字不是描述符。

如何在Windows中執行此操作?

在Windows上,套接字API的返回值是SOCKET ,它不是文件描述符(或者不一定是小的非負整數)。 但是, 根據MSDN ,它可以在某些方面用作文件句柄。 特別是,您可以將其與ReadFile()WriteFile()

您可以嘗試使用MS庫函數_open_osfhandle()將OS級別的文件句柄轉換為C風格的文件描述符。 這適用於常規文件,但可能不適用於SOCKET 一旦有了該文件描述符,就可以將其傳遞給_dup2() ,並將_fileno(stderr)作為第二個參數。 確保使用_close()關閉此描述符,這也會關閉原始句柄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM