[英]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.