我想知道是否有一种方法可以创建一个连续调用两个(或更多)的子进程(通过) 。subprocess.Popen
preexec_fn
例如,调用setegid
and seteuid
(仅用于示例目的)。
到目前为止,我找到了这个解决方法(好吧......它有效,但它看起来不太......直接或“干净”)
#!/usr/bin/python2.7
import subprocess
import os
def preExecuter(listOfFunctions):
for functionEntry in listOfFunctions:
functionEntry["function"](* functionEntry.get("args", []), **functionEntry.get("kwargs", {}))
listOfFunctions = [
{
"function": os.setegid,
"args": [1000],
},
{
"function": os.seteuid,
"args": [1000],
},
]
if __name__ == "__main__":
sp = subprocess.Popen(["whoami"], preexec_fn=preExecuter(listOfFunctions))
sp.communicate()
有没有更好的方法来做到这一点?先感谢您。