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函数的执行情况,继续执行后面的代码?

有劳各位前辈解答,感谢!
...全文
724 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧