|
在一个linux进程中,开两个线程分别通过lua提供的库函数调用lua虚拟机执行lua脚本,编写两份测试脚本,脚本内容为如下:
print("status 1".. os.time())
local cmd="cat /tmp/123.log"
print("cmd:"..cmd)
local swc = io.popen(cmd);
--print("status 2")
local var
if swc then
var=swc:read("*all")
if var then
--print("status 3")
-- local port, up = var:match("port:(%d+) link:(%w+)")
-- os.execute("sleep " .. 1)
end
swc:close()
end
--print("status 4")
return ;
两份脚本执行的都是cat不同文件,在进程中开两个线程来分别不断的执行这两个脚本,进程很快就会卡死,通过printf打印查看到一个线程在执行lua库中的popen调用,另一个线程在执行close,不明白为什么会有这个问题,在另一台不同cpu不同linux版本相同lua版本的嵌入式设备上并不会出现该问题,对比发现两份linux的popen pclose代码不太一样,但不清楚原因。
进程卡死的时候ps查看进程状态为S,两个线程状态分别为S和Running,CPU占用很高,还请高人指点可能是什么原因。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|