程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 文件描述符-關於Linux中的dup2()

文件描述符-關於Linux中的dup2()

編輯:編程綜合問答
關於Linux中的dup2()

UNIX高級編程中,第三章習題中說道:
dup(fd,0);
dup(fd,1);
dup(fd,2);
if (fd >2)
close(fd);
為什麼當fd > 2時需要關閉?
我查找了答案,說是當fd為3時,有4個文件描述符指向同一文件表項,所以要關閉3,難道同一個文件表項的最大只支持3個文件描述符?

最佳回答:


首先,上面應該是
dup2(fd,0);
dup2(fd,1);
dup2(fd,2);
這樣做的是重定向0、1、2(即標准輸入、輸出、出錯)到一個fd中。

明白了上面做的目的。那麼回頭再來看這個問題。
當fd>2時,我們只是希望重定向0、1、2到同一個fd中
而最後不希望一個多余的fd留在那裡占用著文件描述符。
所以要關閉掉。

最後,你的問題,同一個文件表項當然支持大於3個文件描述符了,
不然在dup2(fd, 2); 的時候就應該出出錯了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved