我正在尝试理解dup2
和dup
的用法。
从手册页:
DESCRIPTION
dup and dup2 create a copy of the file descriptor oldfd.
After successful return of dup or dup2, the old and new descriptors may
be used interchangeably. They share locks, file position pointers and
flags; for example, if the file position is modified by using lseek on
one of the descriptors, the position is also changed for the other.
The two descriptors do not share the close-on-exec flag, however.
dup uses the lowest-numbered unused descriptor for the new descriptor.
dup2 makes newfd be the copy of oldfd, closing newfd first if necessary.
RETURN VALUE
dup and dup2 return the new descriptor, or -1 if an error occurred
(in which case, errno is set appropriately).
我为什么需要那个系统调用?复制文件描述符的用途是什么?
如果我有文件描述符,我为什么要复制它呢?
如果您能解释一下,并给我一个需要dup2
/ dup
的例子,我将不胜感激。
谢谢
发布于 2012-07-25 01:53:10
复制文件描述符的另一个原因是将其与fdopen
一起使用。fclose
关闭了传递给fdopen
的文件描述符,所以如果您不想关闭原始文件描述符,则必须先用dup
复制它。
发布于 2012-07-25 00:27:53
dup用于重定向进程的输出。
例如,如果要保存进程的输出,可以复制输出(fd=1),将复制的fd重定向到一个文件,然后派生并执行进程,当进程完成时,再次将保存的fd重定向到输出。
https://stackoverflow.com/questions/11635219
复制相似问题