2 つ (またはそれ以上) を順次呼び出すサブプロセスを ( を介して)作成する方法があるかどうか疑問に思っていました。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()
これを行うより良い方法はありますか?前もって感謝します。