gpt4 book ai didi

linux - pipe()如何识别文件描述符

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:12 25 4
gpt4 key购买 nike

最近在学习linux操作系统。我对 pipe() 函数有疑问。如果我定义一个 int fd[2],pipe() 是否自动知道 fd[0] 已读取并且 fd[1]是写?

如果我想创建一个双射管道,是否意味着我应该定义两个数组 int fd[2]int fd_1[2]?我是否必须使用“fd”作为数组名称?我可以用其他的吗??

非常感谢!!

最佳答案

根据 pipe(2) 的定义系统调用。成功时,它会填充您传递给它的数组的两个元素(索引 [0] 的第一个元素是读取端,索引 [1] 的第二个元素是写端)。不要忘记针对错误情况进行测试。

您传递给 pipe 或任何 C 函数的参数名称是无关紧要的(特别是,因为此类名称仅在编译时已知,在运行时未知;它也可能是一些复杂的指针表达式)。但在运行时它应该是指向两个 int-s

的有效内存区域的指针

请阅读Advanced Linux Programming ,并养成阅读您正在使用的每个功能的文档的习惯。

另请阅读 pipe(7) , socketpair(2) , fifo(7) , syscalls(2) , poll(2)

您经常调用pipe(2)之前 fork(2)你一般close(2)父进程和子进程管道的不同端。

关于linux - pipe()如何识别文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26531495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com