日期:2014-05-16  浏览次数:20818 次

linux c 多线程编程 system函数是否是可重入的!
问题:如标题

谢谢!

------解决方案--------------------
这个好像不可重入;因为它也用到了全局变量errno;
用到了全局变量,静态变量,I/O相关操作,malloc相关操作都不可重入
------解决方案--------------------
在我的印象中,system是不可重入的。

楼下的各位,帮我确定下。


------解决方案--------------------
应该不是吧,C库大部分都不是线程安全的
------解决方案--------------------
探讨
没有很明确的回答吗?谢谢

------解决方案--------------------
malloc是线程安全的。是否可重入跟是否线程安全这两个概念还是有点区别的。

system基本就等于fork + exec, 理论上是没啥问题,具体我也不清楚,呵呵

探讨
这个好像不可重入;因为它也用到了全局变量errno;
用到了全局变量,静态变量,I/O相关操作,malloc相关操作都不可重入

------解决方案--------------------
探讨

话又说回来,exec系列的函数一般也要配合fork使用的。这样看来,system应该是安全的啦。

------解决方案--------------------
不行。