我发现在Linux中同时使用套接字和管道有一个问题。具体地说,我们调用pipe(),它分配下两个可用的文件描述符...假设是10和11。然后我们在套接字上调用accept(),期望它分配12,而不是分配11。
我们已经进行了一些测试,似乎从pipe()返回的第二个FD总是可供创建文件描述符的其他syscall重用。
有人能解释这个吗?
发布于 2010-03-01 08:16:23
这意味着有人在调用管道之后、第二次系统调用之前的某个时间关闭了有问题的文件描述符。例如,如果您派生了一些其他进程来在管道的一端执行某些操作,则可能会搞砸关闭其他进程使用的管道末端的代码,并关闭管道的错误末端。或者其他任何可能在某个文件描述符上调用close的东西都可能关闭了错误的东西。
https://stackoverflow.com/questions/2353113
复制相似问题