免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1253 | 回复: 0
打印 上一主题 下一主题

关于linux的system 和 ace 的system [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-29 13:51 |只看该作者 |倒序浏览
linux 的system() 函数,和ACE_OS::system() 函数非常有用和方便。但是经常也会出现一些问题。总结一下。

ace_os::system() 和 system() 基本是一样的。(没看源码所以不知道)

system 返回值分为两个部分。其中高24位存放的是程序的返回值。低八位主要是存放信号的值。(system属于阻塞型调用。被信号中断时)

由于system是阻塞性调用,如果遇到长时间的调用,则很有可能被信号中断,从而引起不必要的麻烦。因此最好在程序中屏蔽掉信号中断。在屏蔽掉信号中断的同时,应该应该留意屏蔽信号是否对程序其他部分产生什么影响。而且由于子进程是继承父进程的信号屏蔽位的。所以system调用的子进程同样也是屏蔽了所有信号的。因此也要考虑下,是否信号屏蔽对子进程的运作会产生什么影响。如,system("ping 192.168.1.1 -c2"),子进程ping是通过SIGALRM信号实现计数的,如果此时屏蔽了所有的信号中断,将会时程序卡死。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/62281/showart_1947237.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP