我在/ usr / bin中有一个已编译的C程序说 test ,而python程序说 pgm.py < / strong>在/ opt / python /中。在 pgm.py 中,我正在调用类似os.system的C程序(&#34;测试arg1 arg2&#34;)。 C程序是否可以知道/opt/python/pgm.py正在调用它?
答案 0 :(得分:0)
Misc operating system interfaces将获得您想要的信息。 一种方法是让python程序将信息写入临时文件, 然后将该文件作为c-line arg传递给C程序。
答案 1 :(得分:0)
假设您使用类似于Linux的东西,您可以使用特定于平台的解决方案。为简单起见,我使用Python脚本test.py
代替二进制文件。
<强> pgm.py 强>
#!/usr/bin/env python
import os
os.system('python test.py')
<强> test.py 强>
#!/usr/bin/env python
import os, errno
pid = os.getpid()
while 1:
try:
pid = int(open('/proc/%d/stat' % pid).read().split()[3])
cmd = os.readlink('/proc/%d/exe' % pid)
args = open('/proc/%d/cmdline' % pid).read().split('\0')
except OSError as e:
if e.errno == errno.EACCES:
print 'Permission denied for PID=%d' % pid
break
raise
print pid, cmd, args
if pid == 1:
break
运行pgm.py
时,我得到输出......
341 /bin/dash ['sh', '-c', 'python test.py', '']
340 /usr/bin/python2.7 ['python', './pgm.py', '']
13888 /bin/bash ['-bash', '']
Permission denied for PID=13887
所以你可以在test
中测试使用类似的简单比较。