popen和system都可以执行shell脚本,在开发的工程中发现在线程中调用popen执行shell脚本(主要是mv和rm文件)程序经过长期的运行发现有许多僵尸进程。
查看代码 popen后也进行了pclose。没有发现问题。
后来把用popen的地方换成了system,到现在未出现僵尸进程。
popen的原理是先创建一个管道,然后fork一个进程来执行shell命令。
system也是fork一个进程来执行shell命令,但调用者进程会等待shell执行结束后才继续执行,就是说system是阻塞的。
popen出现僵尸进程可能由于他不是线程安全的。
阅读(1956) | 评论(0) | 转发(0) |