我可以使用Python在后台运行rtorrent客户端吗? 我正在尝试使用PIPE导入线程从子进程导入Popen,PIPE
class RunClient(threading.Thread):
queue_cmd = None
torrent = None
def __init__(self,q_cmd,torrent):
self.queue_cmd = q_cmd
threading.Thread.__init__(self)
self.torrent = torrent
def run(self):
"""Run client"""
FNULL = open('/dev/null', 'w')
print(self.torrent.getRun())
process = Popen(self.torrent.getRun(),stdout=FNULL,stdin=FNULL)
self.queue_cmd.put(process)
process.communicate()[0]
此脚本应运行rTorrent并返回带有PID的对象。
class Clients(threading.Thread):
pids = {}
q_cmd = None
def __init__(self,q_cmd):
""" """
self.q_cmd = q_cmd
threading.Thread.__init__(self)
def startClient(self,id):
""" """
q = Queue.Queue(0)
rClient = RunClient(q,Torrent())
rClient.start()
self.pids[id] = q.get()
print self.pids
def run(self):
"""Run torrent client"""
print("Start thread...")
self.startClient(50)
i=0
print("Start while...")
while i<20:
time.sleep(1)
print(">>>",self.pids[50].pid)
i=i+1
此脚本正在尝试使用rTorrent运行一个线程,并在循环中键入PID。
但是当我为stdin和stdout运行客户端为/ dev / null时,它不会运行。当我改为:
process = Popen(self.torrent.getRun(),stdout=PIPE,stdin=PIPE)
在此代码中,主线程正在等待rtorrent关闭。
也许有人会帮助解决这个问题,或者我做错了。
答案 0 :(得分:0)
这里有两个问题: