概述可以dup2真的返回EINTR?
在规范和两个实现中:
根据POSIX, dup2()可能会返回EINTR。
linux的手册页列出了允许的。
FreeBSD手册页表明它从未返回。 这是一个错误 – 因为它的紧密实现可以EINTR(至less为TCP徘徊,如果没有别的)。
事实上,linux可以返回EINTR为dup2() ? 大概如果是这样,这将是因为close()决定等待,并且一个信号到达(TCPclosures或试图在closures时同步的文件系统驱动程序)。
实际上,FreeBSD是否保证不返回EINTR for dup2() ? 在这种情况下,它一定是不用等待旧fd上的任何未完成的 *** 作,而只是将fd解除链接。
POSIX dup2()在引用“closing”(而不是斜体)而不是引用实际的close()函数时意味着什么?我们理解它只是以非正式的方式来“closures”它(取消链接文件描述符),还是试图说效果应该像close()函数首先被调用,然后dup2()被自动调用。
进程在linux中终止时文件描述符是否closures?
中止linux轮询
在linux平台上使用套接字时是否有文件描述符泄漏?
如何从PHP调用dup2()系统调用?
打开并写入C中的多个文件
如果fildes2已经是一个有效的开放文件描述符,则它应该先closures,除非fildes等于fildes2,在这种情况下dup2()应该返回fildes2而不closures它。
如果dup2()不得不closures,等待,然后primefacesdup,这将是一个执行者的噩梦! 这比EINTR差很多close()失败)。 懦弱的POSIX甚至不会说在EINTR的情况下是否发生了dup …
Open在不同的进程中返回相同的文件描述符
dup()后跟close()来自多个线程或进程
MSYS shell保持脚本文件打开,防止修改
使用windows API检索打开的文件描述符的数量
期望在linux中fd <打开文件描述符的最大数目是否合理?
以下是C / POSIX库文档中有关标准linux实现的相关信息:
If olD and NEW are different numbers,and olD is a valID descriptor number,then `dup2\’ is equivalent to: close (NEW); fcntl (olD,F_DUPFD,NEW) However,`dup2\’ does this atomically; there is no instant in the mIDdle of calling `dup2\’ at which NEW is closed and not yet a duplicate of olD.
它将dup和dup2返回的可能的错误值列为EBADF , EINVAL和EMfile ,而没有其他错误值。 该文档指出,所有可以返回EINTR的函数都是这样列出的,这表明这些不是。 请注意,这些是通过fcntl实现的,而不是调用close 。
总结
以上是内存溢出为你收集整理的可以dup2真的返回EINTR?全部内容,希望文章能够帮你解决可以dup2真的返回EINTR?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容