【发布时间】: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