【发布时间】:2021-06-06 11:55:35
【问题描述】:
有没有办法使用 unix 套接字将文件描述符发送到另一个进程,但权限比打开时少?我对以下场景感兴趣:
- P1:使用 RW 权限打开文件“x”并获取文件描述符 fd
- P1:将 fd 发送到具有只读权限的进程 P2
- P2:使用 fd 从文件中读取一些内容
- P1:使用 fd 向文件写入内容
【问题讨论】:
标签: c sockets unix file-descriptor
有没有办法使用 unix 套接字将文件描述符发送到另一个进程,但权限比打开时少?我对以下场景感兴趣:
【问题讨论】:
标签: c sockets unix file-descriptor
无法更改现有文件描述符的访问模式,或将其发送到具有不同访问模式的另一个进程。您可以做的最接近的事情是打开 "/dev/fd/%d" 或 "/proc/self/fd/%d" 以获取指向与旧文件相同的文件的新文件描述符,您可以将其设为只读,然后将其发送到 P2。
【讨论】:
new_fd = open("/dev/fd/%d", O_RDONLY) 我仍然可以写:write(new_fd, buff, sizeof(buff)) 并且它不会失败。据我了解,有些系统的行为是这样的,这意味着它们的行为类似于new_fd = dup(old_fd)。