dup- duplicate的意思,复制
通过man手册里面也可以看到dup的作用是duplicate a file descriptor
dup和dup2的不同之处在于,dup分配的文件描述符是系统自动分配的,找到最小的然后自动分配,而dup2的话属于有半操作性吧,就是你可以规定分配哪个文件描述符。
说了这些,那到底有什么作用呢。
可以利用dup和close来对文件进行重定位。
比如标准IO对应的文件描述符是1,大概思路就是先关闭1,然后把open的文件的文件描述符用dup(默认分配当前最小的空闲的描述符)或者dup2(自己分配的)与1进行绑定,(说人话),也就是open的文件描述符与标准输入输出的是一样的,这个时候与标准IO相关的信息都会关联到这个文件里面(例如printf的信息)
两种方法,一种是真的自己写,另外一种是在terminal的时候加上>符号来实现。
例如,在terminal里面输入ls执行,会显示当前文件夹的文件信息,但是变成ls >read.txt 之后,在terminal里面不会显示,反而所有的信息都会被输出到你指定的当前文件夹的read.txt 里面,当然你也可以自己指定路径。