您的位置:首页 > 其它

system命令需要注意的地方

2018-03-06 10:24 274 查看
        子进程终止或者停止时,会将SIGCHID信号发送给其父进程,但是系统默认是忽略此信号。如果父进程希望被告知其子系统的这种状态,则应捕捉此信号。

        执行system函数时,SIGCHLD信号,最好被显示,因为system函数中,使用到了fork(),waitpid.如果父进程忽略了SIGCHID信号,waitpid就没有不能得到子进程的SIGCHLD信号,那么处理的返回值就会有问题。system的返回值也会有问题。通常的做法是:

        signal( SIGCHLD, SIG_DFL );

        system( command );

        signal( SIGCHLD, SIG_IGN );

建议: 最好自己利用fork和waitpid封装一个类似system的函数,  并且多一个超时的参数配置。

          形如:SAFE_system(char* cmd, long timeout)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: