sh 杀死非法号码:杀死并行进程

问题描述 投票:0回答:2

我正在尝试使用 C++ 程序打开多个并行进程。他们四个必须并行运行。但是当我的 C++ 程序关闭时,我想杀死每个进程。这是我的尝试:

system("python okcsend.py & PID1=$! python okccnysend.py & PID2=$! python okc.py & PID3=$! python okccny.py & PID4=$!");

当试图杀死他们时,这就是我所做的:

system("kill PID1; kill PID2; kill PID3; kill PID4");

但是,这就是我得到的:

sh: 1: kill: Illegal number: PID1
sh: 1: kill: Illegal number: PID2
sh: 1: kill: Illegal number: PID3
sh: 1: kill: Illegal number: PID4

正确的做法是什么?

谢谢。

c++ parallel-processing multiprocessing kill pid
2个回答
0
投票

您需要分别从每个进程获取 PID。

伪代码:

pid1 = system("python okcsend.py & echo $!)
pid2 = system("python okcsend.py & echo $!)
pid3 = system("python okcsend.py & echo $!)
pid4 = system("python okcsend.py & echo $!)

然后你可以这样做:

system("kill " + pid1 + "; kill " + pid2 + "; kill " + pid3 + "; kill " + pid4 + ";");

0
投票

我在使用“lsof”命令时遇到此错误。当我使用“pidof”代替时,问题就解决了。也许它会给你一个解决这个问题的想法。

“lsof”与 ssh 命令一起使用时可能会损坏字符。对于“pidof”则不存在这样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.