簡體   English   中英

更改文件描述符的讀/寫權限

[英]Change read/write permissions on a file descriptor

我正在研究一個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???----

提前致謝! -安德魯

不,沒有POSIX功能來改變打開模式。 您需要以讀/寫模式打開它。 但是,由於您創建了一個臨時文件,我強烈建議您使用mkstemp 該函數在讀/寫模式下正確打開文件並取消鏈接 最重要的是,它避免了命名和創建文件時的競爭條件,從而避免了創建臨時文件時的漏洞。

int fd = open(fname, O_WRONLY, ...)
int fd_ro = open(fname, O_RDONLY, ...)
unlink(fname)
{ write to fd }
close (fd);
read or execute(!) fd_ro

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM