1
我想知道爲什麼DUP總是返回零以下代碼(其中一個文件被打開,10餘DUP相繼完成):DUP返回值始終爲零
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
void main()
{
int i,fdo,fdd;
if((fdo = open("test", O_RDWR | O_CREAT, 0666)) < 0)
{
perror("main open");
return;
}
printf("main open: %d\n",fdo);
for(i=0; i< 10;i++)
{
if((fdd = dup(fdo) < 0)) {
perror("dup");
return ;
}
printf("opened %d, duped: %d \n", fdo,fdd);
}
}
當我運行程序(在Linux 2.6.32-279.19.1.el6.i686,NetBSD的或Solaris 5.9) ,我得到如下結果:
main open: 3
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
opened 3, duped: 0
DUP的返回值始終爲 「0」?
Althought返回值應該是文件描述符手冊頁狀態:
返回值 成功時,這些系統調用返回新的描述符。出錯時,返回-1,並且適當地設置errno。
我不明白爲什麼我總是得到「0」,知道我沒有使用密切操作。
請幫忙。
+1用於閱讀手冊頁。 – devnull 2013-05-08 07:38:32