【问题标题】:How to launch the same linux process with different arguments in multiple threads with Poco process如何使用 Poco 进程在多个线程中启动具有不同参数的相同 linux 进程
【发布时间】:2021-02-08 14:46:36
【问题描述】:

当尝试使用不同的参数和Poco::process 启动相同的 C++ Linux 程序时,我从我的第二个 DummyProcess 中获得了退出 72 代码。 下面这段代码 sn-p 在一个线程函数中执行,该函数每隔一次启动,具有不同的任务和持续时间参数。

当 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 中而不是在线程函数中执行这个 sn-p 并启动​​同一个程序但使用两个 ProcessHandle 对象时,一切正常。

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

【问题讨论】:

    标签: c++ linux multithreading scope poco-libraries


    【解决方案1】:

    我终于找到了答案。我无知地没有提到我在 Windows 主机上的虚拟机中运行 Linux 并且正在使用共享文件夹..

    我注意到在启动可执行文件时,它的权限从 -rwx-rwx-rwx 更改为 -rw-rw-rw,而我无法使用 chmod 更改它们。所以我注意到这里有问题,并将我的 DummyProcess 可执行文件移到共享文件夹之外,现在一切都像魅力一样。

    【讨论】:

      猜你喜欢
      • 2012-04-05
      • 2019-09-28
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      相关资源
      最近更新 更多