是的,如果您使用的是Linux.
如果您知道进程ID,则可以读取其/proc/{pid}/cmdline文件,该文件包含命名行参数的以空分隔的列表:
PROCESS_ID = 14766
cmdline = open("/proc/" + str(pid) + "/cmdline").read()
print cmdline.split("\0")
Run Code Online (Sandbox Code Playgroud)
但是在开始这个过程之前很难知道进程ID.但是有一个解决方案!看看所有流程!
PROGRAM_NAME = "python2\0stack.py"
MAX_PID = int(open("/proc/sys/kernel/pid_max").read())
for pid in xrange(MAX_PID):
try:
cmd = open("/proc/" + str(pid) + "/cmdline").read().strip("\0")
if PROGRAM_NAME in cmd:
print cmd.split("\0")
break
except IOError:
continue
Run Code Online (Sandbox Code Playgroud)
因此,如果我们python2 stack.py arg1 arg2 arg3在shell上运行,将打印一个命令行参数列表.这假设您在给定时间只有一个进程运行脚本.
PS.,MAX_PID是系统上的最大PID.你可以找到它/proc/sys/kernel/pid_max.
PPS.永远,永远,永远像这样写代码.这篇文章是49%的笑话.