nanosleep,clock_nanosleep 休眠类 syscall 自身设计上,就是为了能在休眠过程中通过 signal 来唤醒,所以其会通过参数返回剩余的时间,用户态程序需要自行决定是否进行继续休眠。这里的处理方法是通过在调度器中,直接实现不对 sleep 中的函数进行调度从而实现休眠。

sigsuspend,sigtimedwait/sigwaitinfo 等信号处理与同步类 syscall 本身就是为了等待信号或同步状态,重启它们会违背其逻辑。这里通过判断打断的 signal 是否为 realtime signal 来重启对应的操作。

如果在一个非阻塞或具有超时属性的 Socket 上调用 connect 被中断,它是不可重启的。即便你再次调用 connect ,它也会返回 EALREADY 或 EISCONN ,此时必须通过 select/poll 检查其连接是否完成。

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。