相关疑难解决方法(0)

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

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

c linux

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

在 Linux(或 POSIX)中以只读方式重新打开文件

我以读/写模式打开一个文件并执行一系列读取、写入和搜索(来自用户输入)。

稍后我想将该文件设为只读以防止对其进行任何进一步写入。

是否有 Linux(或 POSIX)功能可以做到这一点?也许有人fcntl打电话?

或者我唯一的选择是保存文件中的当前位置,关闭它并重新打开RD_ONLY

#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int fd = open("/path/to/file", O_RDWR);

// mixture of:
write(fd, ...);
lseek(fd, ...);
read (fd, ...);
// etc

...

// make file read-only ???

read (fd, ...); // OK
lseek(fd, ...); // OK
write(fd, ...); // error
Run Code Online (Sandbox Code Playgroud)

c linux posix

5
推荐指数
1
解决办法
3665
查看次数

标签 统计

c ×2

linux ×2

posix ×1