我正在尝试 fork() 一个新进程,以便可以调用单独的控制台应用程序。
分叉确实发生得很好,我得到了一个新的进程 ID,但进程处于睡眠状态,即使浏览器退出也不会激活。
我只是拿了示例插件项目并修改了 echo 方法来做 fork。
常规控制台应用程序可以与 fork 代码一起正常工作。
对于 firebreath 插件应用程序,是否需要考虑一些不同的因素?
有人可以建议可能是什么问题吗?
该平台是archlinux 64位。
FB::variant PluginTestVZAPI::echo(const FB::variant& msg)
{
static int n(0);
fire_echo("So far, you clicked this many times: ", n++);
// fork
pid_t pid = fork();
if(pid == 0) // Child
{
m_host->htmlLog("child process");
}
else if (pid < 0) // Failed to fork
{
m_host->htmlLog("Failed to fork");
m_host->htmlLog(boost::lexical_cast<std::string>(pid));
}
else // Parent
{
m_host->htmlLog("Parent process");
}
m_host->htmlLog("Child Process PID = " + boost::lexical_cast<std::string>(pid));
// end fork
// return "foobar";
return msg;
}