C++ 为什么非发送fd(发送fd)和非接收fd(接收fd)之间的fd不同?
这是lib辅助测试,为什么父进程发送1,2,而子进程接收3,5 按照代码进行操作,这是lib中的测试:C++ 为什么非发送fd(发送fd)和非接收fd(接收fd)之间的fd不同?,c++,c,C++,C,这是lib辅助测试,为什么父进程发送1,2,而子进程接收3,5 按照代码进行操作,这是lib中的测试: void child_process(int sock) { int fds[3], nfds; //rece fd is 3,5 nfds = ancil_recv_fds(sock, fds, 3); if(nfds < 0) { perror("ancil_recv_fds"); exit(1); } }
void child_process(int sock)
{
int fds[3], nfds;
//rece fd is 3,5
nfds = ancil_recv_fds(sock, fds, 3);
if(nfds < 0) {
perror("ancil_recv_fds");
exit(1);
}
}
void parent_process(int sock)
{
int fds[2] = { 1, 2 };
if(ancil_send_fds(sock, fds, 2)) {
perror("ancil_send_fds");
exit(1);
}
}
我猜这就是所谓的UNIX黑魔法。有关此库的详细信息,请访问网站。子进程中已打开FD 0、1和2。预计Antil_recv_fds func不会关闭现有fds,因此它会使用另外2个新fds。谢谢,这是真的。我明白了。