gpt4 book ai didi

linux - 来自 firebreath npapi 插件的 fork() 问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:32 24 4
gpt4 key购买 nike

我正在尝试 fork() 一个新进程,以便我可以调用一个单独的控制台应用程序。

fork 确实发生了,我得到了一个新的进程 ID,但进程处于休眠状态,即使浏览器退出也根本不会激活。

我只是拿了示例插件项目并修改了 echo 方法来执行 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;
}

最佳答案

我不能确定,但​​如果我是你,我会尝试删除 htmlLog 调用——你无法从子进程访问 DOM,所以 htmlLog 根本不起作用,它是很可能尝试在 fork 进程中使用它会导致它在尝试(未成功)与不了解它的浏览器进程通信时进入非事件状态。

我不确定这是否可行,但我对 fork 一个已经是其他进程的子进程的进程感到非常紧张;浏览器拥有插件进程并通过 IPC 与其通信,因此如果您 fork 该进程,可能会有很多您不知道的代码仍在运行并试图通过现已失效的 IPC 连接与浏览器通信。

我的建议是启动一个单独的流程,但这只是我的建议。至少,您绝对不能使用 FireBreath 提供的任何内容来从子进程与浏览器进行通信。

关于linux - 来自 firebreath npapi 插件的 fork() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9621722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com