Я пытаюсь сделать fork() новый процесс, чтобы я мог вызвать отдельное консольное приложение.Проблема с fork() из firebreath npapi plugin
Вилка действительно прекрасна, и я получаю новый идентификатор процесса, но процесс находится в состоянии сна и вообще не активируется, даже если браузер выходит.
Я только что взял пример проекта плагина и модифицировал метод эха, чтобы сделать вилку.
Обычное консольное приложение отлично работает с кодом вилки.
Есть ли что-то другое, что нужно учитывать для приложения плагинов для 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;
}
Не разрешайте процесс, которому вы не владеете, и не знаете всего; я удивлен, что он не сработает сразу. Помните, что ваш код просто гость в браузере или процессе плагина. –
Поиск через stackoverflow и, в общем, метод запуска нового процесса, похоже, использует fork. Каким будет способ запуска процесса без использования вилки? – csaket