c – 关于linux上的poll实现与solaris上的poll实现

c – 关于linux上的poll实现与solaris上的poll实现,第1张

概述在 linux环境中调试我们的应用程序时,我们可以观察到一些事件–POLLHUP | POLLIN仅在linux上发生.我们的应用程序使用unix套接字.当我们这样做时: ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout); strace显示: poll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLL 在 linux环境中调试我们的应用程序时,我们可以观察到一些事件–PolLHUP | PolliN仅在linux上发生.我们的应用程序使用unix套接字.当我们这样做时:
ret = poll(xpoll->pfd,xpoll->pfd_count,xpoll_timeout);

strace显示:

poll([{fd=4,events=PolliN|PolLPRI|PolLERR|PolLHUP},{fd=6,{fd=7,events=PolliN|PolLPRI|PolLERR|PolLHUP}],3,16) = 1 ([{fd=7,revents=PolliN|PolLHUP}])

在solaris(相同的应用程序)中永远不会发生这种情况:
结果显示:

2463/3:                 fd=569 ev=PolliN|PolLPRI|PolLERR|PolLHUP rev=02463/3:                 fd=639 ev=PolliN|PolLPRI|PolLERR|PolLHUP rev=02463/3:                 fd=631 ev=PolliN|PolLPRI|PolLERR|PolLHUP rev=PolliN2463/3:                 fd=1160 ev=PolliN|PolLPRI|PolLERR|PolLHUP rev=02463/3:                 fd=400 ev=PolliN|PolLPRI|PolLERR|PolLHUP rev=0

你可以解释一下,solaris民意调查和liunx民意调查有什么区别?
提前获取所有答案.

解决方法 linux和Solaris都曾经无法在某些类型的文件(尤其是管道)上为EOF设置PolliN.常见的解决方法是一起检查PolLHUP和PolliN.
据我所知,linux核心开发人员保持这种方式(可能是预期的),而Solaris研究员改变了这种行为以使用PolliN PolLEOF.

但是,这应该对您的应用程序没有问题:为了增加应用程序的可移植性,人们总是会检查位掩码中的两个标志.

干杯!

总结

以上是内存溢出为你收集整理的c – 关于linux上的poll实现与solaris上的poll实现全部内容,希望文章能够帮你解决c – 关于linux上的poll实现与solaris上的poll实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存