假设操作系统是linux.假设我打开了一个文件进行写入并获取文件描述符fdw.是否有可能获得另一个文件描述符fdr,只读访问该文件而不再调用open?我不想调用的原因open是底层文件可能已被其他进程在文件系统中移动甚至取消链接,因此重复使用相同的文件名对此类操作不可靠.所以我的问题是:如果仅提供文件描述符,是否有打开具有不同访问权限的文件描述符? 我认为,dup或者dup2不会改变访问权限.
我正在研究一个Linux C项目,我在使用文件描述符时遇到了麻烦.
我有一个孤立文件描述符(文件是open()'然后取消链接()'但fd仍然很好)具有只写权限.原始后备文件具有完全权限(使用S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH创建),但是文件是使用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???----
Run Code Online (Sandbox Code Playgroud)
提前致谢!-安德鲁