<p>我想编写一个python程序,它调用ipcs并使用其输出删除共享内存段和信号量。
我有一个可行的解决方案,但我觉得一定有更好的方法来实现这一点。
这是我的计划:</p>
<pre><code>import subprocess
def getid(ip):
ret=''
while (output[ip]==' '):
ip=ip+1
while((output[ip]).isdigit()):
ret=ret+output[ip]
ip=ip+1
return ret
print 'invoking ipcs'
output = subprocess.check_output(['ipcs'])
print output
for i in range (len(output)):
if (output[i]=='m'):
r=getid(i+1)
print r
if (r):
op = subprocess.check_output(['ipcrm','-m',r])
print op
elif (output[i]=='s'):
r=getid(i+1)
print r
if (r):
op = subprocess.check_output(['ipcrm','-s',r])
print op
print 'invoking ipcs'
output = subprocess.check_output(['ipcs'])
print output
</code></pre>
<p>特别是,有没有更好的方法来写“getid”?也就是说,不是逐个分析,
我能一个一个字符串地解析它吗?在</p>
<p>输出变量如下(解析前):</p>
^{pr2}$
<p>谢谢!在</p>
<p>可以使用stringsplit方法根据字符串中的空格拆分字符串。在</p>
<p>所以你可以利用</p>
<pre><code>for line in output:
if (line.split(" ")[0] == 'm')):
id = line.split(" ")[2]
print id
</code></pre>