“当工作空间中止时,从系统调用者触发的进程不会结束”的注释和答案 https://knowledge.亚搏在线safe.com/questions/87473/process-triggered-from-system-caller-does-not-end.html “工作空间中止时,从系统调用者触发的进程不会结束”问题的最新注释和答案 关于harmen_kampinga的评论 https://knowledge.亚搏在线safe.com/comments/87829/view.html

I' I ' ll show my developer first, then I will get back on it


2019年3月1日星期五13:28:38格林尼治时间 harmen_kampinga
david_r评论david_r的回答 https://knowledge.亚搏在线safe.com/comments/87826/view.html

,如果不知道您正在启动的是什么进程,以及您是如何启动它的,就很难说了…

2019年3月1日星期五13:20:51 GMT david_r
答案由harmen_kampinga https://knowledge.亚搏在线safe.com/answers/87823/view.html 与此相关的另一件事/问题是:我的批处理文件或可执行文件已经运行完了,但是系统调用者仍然在运行。因此工作空间中的进程没有继续。这是一个相关的问题还是一个新的问题?<一个rel = "用户" href = " /用户/ 491 /行善。html" nodeid="491">@david_r @virtualcitymatt < / >吗? < / p > < / div > 2019年3月1日星期五12:50:49 GMT harmen_kampinga harmen_kampinga发表评论 https://knowledge.亚搏在线safe.com/comments/87820/view.html 这也是我的一个问题,当我触发一个可执行的

,如果可执行已经公平运行,系统调用不会结束…当我停止运行工作空间

时,它也会继续运行

2019年3月1日星期五12:13:27 GMT harmen_kampinga 评论由virtualcitymatt对virtualcitymatt的评论 https://knowledge.亚搏在线safe.com/comments/87499/view.html

Ok谢谢David,感谢你的建议。< br / > < / p > < / div >欢呼 2019年2月25日星期一,格林尼治时间13:43:12 virtualcitymatt david_r对david_r的评论 https://knowledge.亚搏在线safe.com/comments/87492/view.html

可以更容易地跳过SystemCaller并使用Python中的subprocess.Popen()函数启动java应用程序:它将返回pid供您稍后使用,而不必根据任务列表进行猜测。

2019年2月25日星期一12:15:16 GMT david_r 评论由virtualcitymatt对virtualcitymatt的答案 https://knowledge.亚搏在线safe.com/comments/87490/view.html

谢谢@david_r
该进程是一个java程序,其中的调用类似于" java -jar '<some jar file>';所以进程是java.exe——我可以寻找并杀死与java.exe进程相关的pid,当且仅当有一个java.exe在运行时。这可能是我唯一的选择,就像你说的,除非你知道一种方法来获取由Python的系统调用者触发的进程……?

理想情况下,如果系统调用者中有我遗漏的东西以避免需要,那就太好了,但这可能只是一厢情愿的想法:D

2019年2月25日星期一12:03:27 GMT virtualcitymatt david_r评论david_r的回答 https://knowledge.亚搏在线safe.com/comments/87479/view.html

上面的代码从命令" tasklist&"中获取输出;并分割进程id。如果您愿意,也可以通过将上面第10行上的索引从1更改为0来查找可执行文件的名称:

 
running_process_ids = [line[0] for…
]
2019年2月25日星期一09:35 . 50 GMT david_r
答案由david_r https://knowledge.亚搏在线safe.com/answers/87478/view.html

如何在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

2019年2月25日星期一09:32:48 GMT david_r