在unix-like系统编程中,如果涉及到文件的读写,就涉及到文件描述符的使用。因为文件描述符都是非负整数,
所以我想不出什么方法可以判断文件描述符已经被正在使用,但是我看书的时候发现有一个函数
dup2(int fields,int fields2)
这个函数是通过自己指定文件描述符(fields2),来复制现有的文件描述符(fields),如果指定的文件描述符已经
被使用,那么就会先把该文件描述符对应的文件先关闭!所以我就有疑问,它是怎样判断一个文件描述符已经被使用了?
在unix-like系统编程中,如果涉及到文件的读写,就涉及到文件描述符的使用。因为文件描述符都是非负整数,
所以我想不出什么方法可以判断文件描述符已经被正在使用,但是我看书的时候发现有一个函数
dup2(int fields,int fields2)
这个函数是通过自己指定文件描述符(fields2),来复制现有的文件描述符(fields),如果指定的文件描述符已经
被使用,那么就会先把该文件描述符对应的文件先关闭!所以我就有疑问,它是怎样判断一个文件描述符已经被使用了?
1 回答674 阅读✓ 已解决
3 回答568 阅读✓ 已解决
1 回答1.3k 阅读
1 回答778 阅读✓ 已解决
2 回答501 阅读✓ 已解决
1 回答970 阅读
1 回答606 阅读✓ 已解决
用fcntl函数做F_GETFD操作,如果文件不是一个已打开的合法描述符,errno会设置为EBADF。可以man fcntl看下