0

我正在使用 Linux sendmsg() 函数通过 Unix 套接字将文件描述符以及一些数据有效负载发送到另一个进程。我多次调用 sendmsg。在目标进程内的 recvmsg() 伴随调用中,我使用类似“fdptr = (int *) CMSG_DATA(cmsg); memcpy(fdptr, myfds, NUM_FD * sizeof(int));”的内容获取文件描述符 我注意到,每次查看文件描述符时,文件描述符的编号都与之前的 recvmsg() 调用不同。

我的问题:目标进程是否对同一个文件/硬件保持打开一堆打开的描述符?我需要关闭描述符吗?

如果我不尝试使用“memcpy(fdptr, myfds, NUM_FD * sizeof(int));”复制描述符会发生什么 本质上是“把它留在里面”CMSG_DATA(cmsg)?会不会有一些带有未知数字的描述符坐在那里?如果我没有把它复制出来,我永远不会看到它本质上是另一个描述符编号。

4

0 回答 0