请教在程序中,跟system函数差不多, 而让系统命令在后台执行的函数
我用system函数执行一个系统命令的时候,因为该系统命令需要比较长的时间, 而导致我的程序主线程一直在等待. 请问有没有什么函数跟system的作用差不多, 而调用以后马上返回, 让执行系统命令的操作在子线程中进行的函数.
我执行的操作是: system("service nfs restart")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
>>
>>
>>赞同使用fork一下来解决。
>>
>>
fork一个子进程,或者创建一个自动释放的线程
如果需要获得后台进程的执行结果,可以用popen代替system
[ 本帖最后由 s5unty 于 2006-11-2 15:15 编辑 ]
昨天晚上试过, 我用了加&的方法,已经能够满足要求. 谢谢回答我问题的热心兄弟.
可以先fork一个子进程,然后调用system。
可以在你的命令字符串最后加一个“&”。
另外,这里的情况可以使用exec库例程调用。一般步骤是:
1.fork一个子进程
2.若fork正常,父进程设置信号SIGCHLD为忽略(不返回),可以去做其它事,子进程则按以下顺序执行
3.子进程调用例程setpgrp,将自己提交给进程init
4.调用适当的exec例程,覆盖子进程空间
多参考手册页,会有帮助的。