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



在 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();

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

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

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