如何在BrowserChildProcessHostImpl->启动后获取浏览器子进程的进程ID

时间:2014-02-12 14:47:01

标签: c++ chromium

在Chromium开源代码的上下文中, 我正在开发一个从content::BrowserChildProcessHostDelegateIPC::Sender延伸的课程。在我班级的一个方法中,我启动了一个子进程,如下所示:

scoped_ptr<BrowserChildProcessHostImpl> process_;
...
process_->Launch(
#if defined(OS_WIN)
     new MySandboxedProcessLauncherDelegate,
#elif defined(OS_POSIX)
     false, // don't use zygote
     env,
#endif
     cmd_line);

问题:如何获取此Launch函数正在创建的子进程的PID?

编辑:在Launch之后立即调用以下函数不起作用:

base::ProcessHandle child_handle = process_->GetHandle();

1 个答案:

答案 0 :(得分:0)

我通过在我的课程中调用process_->GetHandle();,在重写的方法virtual void OnProcessLaunched() OVERRIDE;中解决了这个问题,如下面的代码所示:

void MyProcessHost::OnProcessLaunched() {
      MyProcessHost::child_process_handle_ = this->process_->GetHandle();
}

我使用静态字段:static base::ProcessHandle child_process_handle_来存储句柄的值,但您当然也可以使用非静态字段。