1. dup和dup2函數(shù)
#include <unistd.h>
int dup(int filedes);
int dup2(int filedes, int filedes2);
// Both return: new file descriptor if OK, -1 on error
dup返回的file descriptor(以下簡稱fd)為當(dāng)前可用的最低號碼,dup2則指定目的fd,如果該fd已被打開,則首先關(guān)閉這個fd。
dup后兩個fd指向相同的file table entry,這意味著它們共享同一個的file status flag, read, write, append, offset等。
事實上,dup等價于
fcntl(filedes, F_DUPFD, 0);
dup2和也類似于
close(filedes2);
fcntl(filedes, F_DUPFD, filedes2);
但這不是一個原子操作,而且errno也有一定的不同。
#include <unistd.h>
int dup(int filedes);
int dup2(int filedes, int filedes2);
// Both return: new file descriptor if OK, -1 on error
dup返回的file descriptor(以下簡稱fd)為當(dāng)前可用的最低號碼,dup2則指定目的fd,如果該fd已被打開,則首先關(guān)閉這個fd。
dup后兩個fd指向相同的file table entry,這意味著它們共享同一個的file status flag, read, write, append, offset等。
事實上,dup等價于
fcntl(filedes, F_DUPFD, 0);
dup2和也類似于
close(filedes2);
fcntl(filedes, F_DUPFD, filedes2);
但這不是一個原子操作,而且errno也有一定的不同。