#include <unistd.h>
int dup(int files);
int dup2(int files, int filedes2);
函数返回值:若成功则返回新的文件秒速符,若出错则返回-1。
相同点:dup和dup2两个函数都可以用来复制一个已经存在的文件描述符。
不同点:dup返回的新文件描述符一定是当前可用文件描述符中最小数值,dup2则可以是用filedes2参数指定新的描述符。
如果filedes已经打开,则先将其关闭。若filedes2等于filedes,则dup2返回filedes2,而不关闭它。
注意:这两函数返回的新文件描述符与参数filedes共享一个文件表项,所以它们共享同一文件状态标志已经同一当前文件偏移量。
每个文件描述符都有它自己的一套文件描述符标志。新的文件描述符的执行关闭标志总是由dup函数清除。