I' I ' ll show my developer first, then I will get back on it
,如果不知道您正在启动的是什么进程,以及您是如何启动它的,就很难说了…
,如果可执行已经公平运行,系统调用不会结束…当我停止运行工作空间
时,它也会继续运行Ok谢谢David,感谢你的建议。< br / > < / p > < / div >欢呼
可以更容易地跳过SystemCaller并使用Python中的subprocess.Popen()函数启动java应用程序:它将返回pid供您稍后使用,而不必根据任务列表进行猜测。 谢谢@david_r, 上面的代码从命令" tasklist&"中获取输出;并分割进程id。如果您愿意,也可以通过将上面第10行上的索引从1更改为0来查找可执行文件的名称: 如何在SystemCaller中启动子进程?如果你能得到的进程id (pid)你可以使用如PythonCaller FME等待过程终止。< / p > < p >这是# 39;年代一个示例,需要一个进程id列表(< em > pid_list {} < / em >),等到他们# 39;ve所有终止前触发功能是输出:< / p > < >之前导入子流程导入timeclass FeatureProcessor(对象):def __init__(自我):通过def输入(自我,特性):当如此:subprocess_lines = [line.split() for line in subprocess.check_output(" tasklist&").splitlines()]如果len(line) >1] is_running = any(如果is_running: time.sleep(3) else: break self.pyoutput(feature) def close(self): pass
该进程是一个java程序,其中的调用类似于" java -jar '<some jar file>';所以进程是java.exe——我可以寻找并杀死与java.exe进程相关的pid,当且仅当有一个java.exe在运行时。这可能是我唯一的选择,就像你说的,除非你知道一种方法来获取由Python的系统调用者触发的进程……?
理想情况下,如果系统调用者中有我遗漏的东西以避免需要,那就太好了,但这可能只是一厢情愿的想法:D
running_process_ids = [line[0] for…