在Chromium开源代码的上下文中,
我正在开发一个从content::BrowserChildProcessHostDelegate
和IPC::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();
答案 0 :(得分:0)
我通过在我的课程中调用process_->GetHandle();
,在重写的方法virtual void OnProcessLaunched() OVERRIDE;
中解决了这个问题,如下面的代码所示:
void MyProcessHost::OnProcessLaunched() {
MyProcessHost::child_process_handle_ = this->process_->GetHandle();
}
我使用静态字段:static base::ProcessHandle child_process_handle_
来存储句柄的值,但您当然也可以使用非静态字段。