复制文件描述符
int dup(int oldfd); 功能:复制文件描述符 oldfd:已经打开的要复制的文件描述符 返回值:返回一个新的文件描述符,是当前可用的文件描述符中最小值,失败-1 int dup2(int oldfd, int newfd); 功能:复制oldfd文件描述符成指定的文件描述符newfd 如果newfd原来已经被占用,则会把它关闭重新复制 返回值:成功0 失败-1 注意:复制成功后,相当于两个文件描述符对应同一个打开的文件
复制文件描述符的意义:
-
复制成功后,相当于两个文件描述符对应同一个打开的文件,可以以此实现很多奇特的操作,例如重定向文件读写、重定向命令 ls >> file
-
通过把一个已经打开了的文件描述符fd,通过dup2重定向为标准输入0或者标准输出1,此时就会先把0、1文件关闭,然后0\1指向我们刚刚的文件fd,此后,通过输出语句执行时,相当于把本来要输出到屏幕的内容,直接写如到文件fd中,相当于执行write,如果执行输入语句,相当于把本来要从键盘中输入的内容,直接从文件fd中读取,相当于执行了read操作