现在的位置: 首页 > 综合 > 正文

popen函数引发的血案 — 64位debian 6

2013年06月03日 ⁄ 综合 ⁄ 共 754字 ⁄ 字号 评论关闭

在使用popen()函数查看my_test.py进程数的shell命令是:ps
-ef | grep '/usr/bin/python /var/test/my_test.py' | grep -v grep | wc -l
 
返回的结果始终是0!!!但是在终端上执行该命令的结果却又是正确的!
于是只能一步一步来,先看看命令的前半部分结果是否正确,也就是使用popen()函数执行:

ps -ef | grep '/usr/bin/python
/var/test/my_test.py',结果为空。

接下来只好用popen()函数执行:ps -ef,结果能显示出一些进程,但是my_test.py进程的一行有一点问题,只显示:

root      2141     1  0 17:03 ?        00:00:08 /usr/bin/python
/var/test/my_tes

可以看出后面少了几个字符,应该是:
root      2141     1  0 17:03 ?        00:00:08 /usr/bin/python
/var/test/my_test.py

才对。然后查看了ps的命令,看看能不能找到某些参数能让去掉前面的一些对我们这里不太重要的信息,结果却找到了
-w(显示加宽可以显示较多的资讯)参数,于是一试,对应的结果为:

root      2141     1  0 17:03 ?        00:00:08 /usr/bin/python
/var/test/my_tes

t.py


于是我推断,应该是64位系统的shell环境每行只允许输出80个字符(root 
    2141     1  0 17:03 ?        00:00:08 /usr/bin/python
/var/test/my_tes
 的长度
),使用 -w 参数可以将输出换行,这样就能得到正确的结果!



抱歉!评论已关闭.