更改文件描述符的读/写权限

我正在开发一个Linux C项目,并且在处理文件描述符时遇到了麻烦。

我有一个孤立的文件描述符(该文件是打开()'d然后取消链接()'D,但FD仍然是好的)具有只写权限。 原来的支持文件具有完全的权限(使用S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH创build),但是,该文件是用O_WRONLY打开的。 是否可以复制文件描述符并将副本更改为O_RDWR?

psudo代码:

//open orphan file int fd = open(fname, O_WRONLY, ...) unlink(fname) //fd is still good, but I can't read from it //... //I want to be able to read from orphan file int fd2 = dup(fd) //----change fd2 to read/write???---- 

提前致谢! -安德鲁

Solutions Collecting From Web of "更改文件描述符的读/写权限"

不,没有POSIX功能来改变打开模式。 您将需要以读/写模式打开它。 既然你是创建一个临时文件,但是,我强烈建议你使用mkstemp 。 该功能以读/写模式正确打开文件并取消链接 。 最重要的是,它避免了命名和创建文件时的竞争条件,从而避免了在创建临时文件时的漏洞。