如何使用Poco进程在多个线程中启动具有不同参数的相同linux进程 当尝试启动同一个C++ Linux程序时,使用不同的参数,并使用 POCO:进程< /C>,从第二个DimMyPo过程中获得退出72代码。 下面的代码段是在线程函数中执行的,该函数每隔一次启动一次,使用不同的任务和持续时间参数

如何使用Poco进程在多个线程中启动具有不同参数的相同linux进程 当尝试启动同一个C++ Linux程序时,使用不同的参数,并使用 POCO:进程< /C>,从第二个DimMyPo过程中获得退出72代码。 下面的代码段是在线程函数中执行的,该函数每隔一次启动一次,使用不同的任务和持续时间参数,c++,linux,multithreading,scope,poco-libraries,C++,Linux,Multithreading,Scope,Poco Libraries,当task-1正在运行且task-2想要启动时,将分配其PID(与task1 PID不同),并尝试启动。起初,Poco::Process::tryWait()返回-1(这意味着正在运行),但不久之后返回72,程序实际上并没有启动 command="/DummyProcess"; args{"task","duration"}; Poco::ProcessHandle ph = Poco::Process::launch(command,

当task-1正在运行且task-2想要启动时,将分配其PID(与task1 PID不同),并尝试启动。起初,
Poco::Process::tryWait()
返回-1(这意味着正在运行),但不久之后返回72,程序实际上并没有启动

command="/DummyProcess";
args{"task","duration"};
Poco::ProcessHandle ph = Poco::Process::launch(command, args));
rc = ph.id();
在main中(而不是在线程函数中)执行此代码段,并启动同一个程序但使用两个ProcessHandle对象时,一切正常

此外,当进程不必同步工作时,一切都可以正常工作。
更具体地说:如果task-1在线程中启动,并且在task-2启动之前完成,那么task-2将按预期启动并运行。

我终于找到了答案。我无意中没有提到我在windows主机上的虚拟机中运行Linux,并使用一个共享文件夹


我注意到,当启动一个可执行文件时,它的权限从-rwx-rwx-rwx更改为-rw-rw-rw,而我不能用chmod更改它们。因此,我注意到这里有些可疑之处,并将我的DummyProcess可执行文件移到了共享文件夹之外,现在一切都很顺利。

我终于找到了答案。我无意中没有提到我在windows主机上的虚拟机中运行Linux,并使用一个共享文件夹

我注意到,当启动一个可执行文件时,它的权限从-rwx-rwx-rwx更改为-rw-rw-rw,而我不能用chmod更改它们。所以我注意到这里有点可疑,于是将我的DummyProcess可执行文件移到了共享文件夹之外,现在一切都很顺利