system()改写

时间:2017-04-21 04:37:10
【文件属性】:
文件名称:system()改写
文件大小:2KB
文件格式:C
更新时间:2017-04-21 04:37:10
system改写 Linux system()是fork()+execl() 不会关闭从父进程继承过来的文件描述符 如果使用system()调用生命期短的进程一般问题不大,如果调用一个生命期比主进程还长的进程肯定有问题,比如在主进程中打开了一个socket并绑定了一个固定的端口,然后用system()调用一个生命期比主进程还长的命令,如果此时主进程挂了,再起来的时候绑定同一个端口会失败,因为socket已经被子进程占用,端口已经被子进程绑定。 其实正确高效的做法应该是使用fcntl设置文件描述符不可被继承。

网友评论