相关疑难解决方法(0)

用另一个访问重新打开文件描述符?

假设操作系统是linux.假设我打开了一个文件进行写入并获取文件描述符fdw.是否有可能获得另一个文件描述符fdr,只读访问该文件而不再调用open?我不想调用的原因open是底层文件可能已被其他进程在文件系统中移动甚至取消链接,因此重复使用相同的文件名对此类操作不可靠.所以我的问题是:如果仅提供文件描述符,是否有打开具有不同访问权限的文件描述符? 我认为,dup或者dup2不会改变访问权限.

c linux

13
推荐指数
2
解决办法
7428
查看次数

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

我正在研究一个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)

提前致谢!-安德鲁

c linux unlink dup

11
推荐指数
1
解决办法
4582
查看次数

标签 统计

c ×2

linux ×2

dup ×1

unlink ×1