• 主页
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux

Linux c system函数异常的问题

keeley20 2017-10-23 04:33:29
初次用Linux c 写个小工具,遇到一点问题,
详情如下:
一些情况下我需要手动启动apache服务,使用
system("service apache start");
system("service apache stop");

一切正常,
一次不小心把apachee服务名弄错了,多加了个e,结果报以下错误,且程序直接退出,后面的代码也没有执行了。
system("service apachee start");
Failed to stop apachee.service: Unit apachee.service not loaded.
Segmentation fault

我的问题是,1、当system函数执行的命令报错或者是错误命令时,为什么程序就直接异常退出了?
2、如何忽略system函数的执行情况,继续执行后面的代码?

有劳各位前辈解答,感谢!
...全文
497 点赞 收藏 4
写回复
4 条回复
9527 2017年10月24日
你屏蔽他干什么哪
引用 3 楼 keeley20 的回复:
[quote=引用 2 楼 9527 的回复:] [quote=引用 楼主 keeley20 的回复:] 初次用Linux c 写个小工具,遇到一点问题, 详情如下: 一些情况下我需要手动启动apache服务,使用
system("service apache start");
system("service apache stop");
一切正常, 一次不小心把apachee服务名弄错了,多加了个e,结果报以下错误,且程序直接退出,后面的代码也没有执行了。
system("service apachee start");
Failed to stop apachee.service: Unit apachee.service not loaded.
Segmentation fault
我的问题是,1、当system函数执行的命令报错或者是错误命令时,为什么程序就直接异常退出了? 2、如何忽略system函数的执行情况,继续执行后面的代码? 有劳各位前辈解答,感谢!
system调用时不会出现段错误的,请确认。 可以用gdb直接执行下试试,或者生成core文件确定出错代码位置[/quote] 多谢二位回复,段错误不知道是否因system引起,可忽略。请问9527,当system遇到异常时,能否将“Failed to stop apachee.service: Unit apachee.service not loaded.”屏蔽掉,不显示。[/quote] system中的信息本来就是在shell中,如果你不用popen是看不到的,如果确定是要屏蔽,可以用重定向例如 ls > /dev/null
回复 点赞
keeley20 2017年10月24日
引用 2 楼 9527 的回复:
[quote=引用 楼主 keeley20 的回复:] 初次用Linux c 写个小工具,遇到一点问题, 详情如下: 一些情况下我需要手动启动apache服务,使用
system("service apache start");
system("service apache stop");
一切正常, 一次不小心把apachee服务名弄错了,多加了个e,结果报以下错误,且程序直接退出,后面的代码也没有执行了。
system("service apachee start");
Failed to stop apachee.service: Unit apachee.service not loaded.
Segmentation fault
我的问题是,1、当system函数执行的命令报错或者是错误命令时,为什么程序就直接异常退出了? 2、如何忽略system函数的执行情况,继续执行后面的代码? 有劳各位前辈解答,感谢!
system调用时不会出现段错误的,请确认。 可以用gdb直接执行下试试,或者生成core文件确定出错代码位置[/quote] 多谢二位回复,段错误不知道是否因system引起,可忽略。请问9527,当system遇到异常时,能否将“Failed to stop apachee.service: Unit apachee.service not loaded.”屏蔽掉,不显示。
回复 点赞
9527 2017年10月24日
引用 楼主 keeley20 的回复:
初次用Linux c 写个小工具,遇到一点问题, 详情如下: 一些情况下我需要手动启动apache服务,使用
system("service apache start");
system("service apache stop");
一切正常, 一次不小心把apachee服务名弄错了,多加了个e,结果报以下错误,且程序直接退出,后面的代码也没有执行了。
system("service apachee start");
Failed to stop apachee.service: Unit apachee.service not loaded.
Segmentation fault
我的问题是,1、当system函数执行的命令报错或者是错误命令时,为什么程序就直接异常退出了? 2、如何忽略system函数的执行情况,继续执行后面的代码? 有劳各位前辈解答,感谢!
system调用时不会出现段错误的,请确认。 可以用gdb直接执行下试试,或者生成core文件确定出错代码位置
回复 点赞
rayw0ng 2017年10月23日
可以改用 popen
回复 点赞
发动态
发帖子
Linux/Unix社区
创建于2007-08-27

7071

社区成员

7.3w+

社区内容

Linux/Unix社区 应用程序开发区
社区公告
暂无公告