Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么非发送fd(发送fd)和非接收fd(接收fd)之间的fd不同?_C++_C - Fatal编程技术网

C++ 为什么非发送fd(发送fd)和非接收fd(接收fd)之间的fd不同?

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); } }

这是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 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。谢谢,这是真的。我明白了。