diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-21 20:01:31 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-21 20:01:31 +0000 |
commit | 8cd77dc30ea2528c7190b4e4629e560118d568b6 (patch) | |
tree | dd2f2e2f3d1f39efd0474823455a78a86a246c26 /base | |
parent | 2fec49dae9e67e1133d8884627c05f74c6ac3e59 (diff) | |
download | chromium_src-8cd77dc30ea2528c7190b4e4629e560118d568b6.zip chromium_src-8cd77dc30ea2528c7190b4e4629e560118d568b6.tar.gz chromium_src-8cd77dc30ea2528c7190b4e4629e560118d568b6.tar.bz2 |
POSIX: Get render_process_host to build.
This is an adopted CL from Evan. Original:
http://codereview.chromium.org/14504
(see original for review comments etc)
Review URL: http://codereview.chromium.org/16814
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8384 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/process_util.h | 3 | ||||
-rw-r--r-- | base/process_util_win.cc | 25 |
2 files changed, 17 insertions, 11 deletions
diff --git a/base/process_util.h b/base/process_util.h index ae38c5a..f00016e 100644 --- a/base/process_util.h +++ b/base/process_util.h @@ -139,6 +139,9 @@ bool KillProcesses(const std::wstring& executable_name, int exit_code, // for the process to be actually terminated before returning. // Returns true if this is successful, false otherwise. bool KillProcess(int process_id, int exit_code, bool wait); +#if defined(OS_WIN) +bool KillProcess(HANDLE process, int exit_code, bool wait); +#endif // Get the termination status (exit code) of the process and return true if the // status indicates the process crashed. It is an error to call this if the diff --git a/base/process_util_win.cc b/base/process_util_win.cc index a69f5d5..f1fd72c 100644 --- a/base/process_util_win.cc +++ b/base/process_util_win.cc @@ -153,21 +153,24 @@ bool LaunchApp(const CommandLine& cl, // entry structure, giving it the specified exit code. // Returns true if this is successful, false otherwise. bool KillProcess(int process_id, int exit_code, bool wait) { - bool result = false; HANDLE process = OpenProcess(PROCESS_TERMINATE | SYNCHRONIZE, FALSE, // Don't inherit handle process_id); - if (process) { - result = !!TerminateProcess(process, exit_code); - if (result && wait) { - // The process may not end immediately due to pending I/O - if (WAIT_OBJECT_0 != WaitForSingleObject(process, 60 * 1000)) - DLOG(ERROR) << "Error waiting for process exit: " << GetLastError(); - } else { - DLOG(ERROR) << "Unable to terminate process: " << GetLastError(); - } - CloseHandle(process); + if (process) + return KillProcess(process, exit_code, wait); + return false; +} + +bool KillProcess(HANDLE process, int exit_code, bool wait) { + bool result = !!TerminateProcess(process, exit_code); + if (result && wait) { + // The process may not end immediately due to pending I/O + if (WAIT_OBJECT_0 != WaitForSingleObject(process, 60 * 1000)) + DLOG(ERROR) << "Error waiting for process exit: " << GetLastError(); + } else { + DLOG(ERROR) << "Unable to terminate process: " << GetLastError(); } + CloseHandle(process); return result; } |