Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: base/process_util.h

Issue 3423012: Cleanup orphaned testserver processes on posix. (Closed)
Patch Set: CR feedback. Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | base/process_util_posix.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file/namespace contains utility functions for enumerating, ending and 5 // This file/namespace contains utility functions for enumerating, ending and
6 // computing statistics of processes. 6 // computing statistics of processes.
7 7
8 #ifndef BASE_PROCESS_UTIL_H_ 8 #ifndef BASE_PROCESS_UTIL_H_
9 #define BASE_PROCESS_UTIL_H_ 9 #define BASE_PROCESS_UTIL_H_
10 #pragma once 10 #pragma once
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 bool wait, ProcessHandle* process_handle); 219 bool wait, ProcessHandle* process_handle);
220 220
221 // Similar to the above, but also (un)set environment variables in child process 221 // Similar to the above, but also (un)set environment variables in child process
222 // through |environ|. 222 // through |environ|.
223 typedef std::vector<std::pair<std::string, std::string> > environment_vector; 223 typedef std::vector<std::pair<std::string, std::string> > environment_vector;
224 bool LaunchApp(const std::vector<std::string>& argv, 224 bool LaunchApp(const std::vector<std::string>& argv,
225 const environment_vector& environ, 225 const environment_vector& environ,
226 const file_handle_mapping_vector& fds_to_remap, 226 const file_handle_mapping_vector& fds_to_remap,
227 bool wait, ProcessHandle* process_handle); 227 bool wait, ProcessHandle* process_handle);
228 228
229 // Similar to the above two methods, but starts the child process in a process
230 // group of its own, instead of allowing it to inherit the parent's process
231 // group. The pgid of the child process will be the same as its pid.
232 bool LaunchAppInNewProcessGroup(const std::vector<std::string>& argv,
233 const environment_vector& environ,
234 const file_handle_mapping_vector& fds_to_remap,
235 bool wait, ProcessHandle* process_handle);
236
229 // AlterEnvironment returns a modified environment vector, constructed from the 237 // AlterEnvironment returns a modified environment vector, constructed from the
230 // given environment and the list of changes given in |changes|. Each key in 238 // given environment and the list of changes given in |changes|. Each key in
231 // the environment is matched against the first element of the pairs. In the 239 // the environment is matched against the first element of the pairs. In the
232 // event of a match, the value is replaced by the second of the pair, unless 240 // event of a match, the value is replaced by the second of the pair, unless
233 // the second is empty, in which case the key-value is removed. 241 // the second is empty, in which case the key-value is removed.
234 // 242 //
235 // The returned array is allocated using new[] and must be freed by the caller. 243 // The returned array is allocated using new[] and must be freed by the caller.
236 char** AlterEnvironment(const environment_vector& changes, 244 char** AlterEnvironment(const environment_vector& changes,
237 const char* const* const env); 245 const char* const* const env);
238 #endif // defined(OS_POSIX) 246 #endif // defined(OS_POSIX)
(...skipping 30 matching lines...) Expand all
269 277
270 // Returns the number of processes on the machine that are running from the 278 // Returns the number of processes on the machine that are running from the
271 // given executable name. If filter is non-null, then only processes selected 279 // given executable name. If filter is non-null, then only processes selected
272 // by the filter will be counted. 280 // by the filter will be counted.
273 int GetProcessCount(const std::wstring& executable_name, 281 int GetProcessCount(const std::wstring& executable_name,
274 const ProcessFilter* filter); 282 const ProcessFilter* filter);
275 283
276 // Attempts to kill all the processes on the current machine that were launched 284 // Attempts to kill all the processes on the current machine that were launched
277 // from the given executable name, ending them with the given exit code. If 285 // from the given executable name, ending them with the given exit code. If
278 // filter is non-null, then only processes selected by the filter are killed. 286 // filter is non-null, then only processes selected by the filter are killed.
279 // Returns false if all processes were able to be killed off, false if at least 287 // Returns true if all processes were able to be killed off, false if at least
280 // one couldn't be killed. 288 // one couldn't be killed.
281 bool KillProcesses(const std::wstring& executable_name, int exit_code, 289 bool KillProcesses(const std::wstring& executable_name, int exit_code,
282 const ProcessFilter* filter); 290 const ProcessFilter* filter);
283 291
284 // Attempts to kill the process identified by the given process 292 // Attempts to kill the process identified by the given process
285 // entry structure, giving it the specified exit code. If |wait| is true, wait 293 // entry structure, giving it the specified exit code. If |wait| is true, wait
286 // for the process to be actually terminated before returning. 294 // for the process to be actually terminated before returning.
287 // Returns true if this is successful, false otherwise. 295 // Returns true if this is successful, false otherwise.
288 bool KillProcess(ProcessHandle process, int exit_code, bool wait); 296 bool KillProcess(ProcessHandle process, int exit_code, bool wait);
297
298 #if defined(OS_POSIX)
299 // Attempts to kill the process group identified by |process_group_id|. Returns
300 // true on success.
301 bool KillProcessGroup(ProcessHandle process_group_id);
302 #endif
303
289 #if defined(OS_WIN) 304 #if defined(OS_WIN)
290 bool KillProcessById(ProcessId process_id, int exit_code, bool wait); 305 bool KillProcessById(ProcessId process_id, int exit_code, bool wait);
291 #endif 306 #endif
292 307
293 // Get the termination status (exit code) of the process and return true if the 308 // Get the termination status (exit code) of the process and return true if the
294 // status indicates the process crashed. |child_exited| is set to true iff the 309 // status indicates the process crashed. |child_exited| is set to true iff the
295 // child process has terminated. (|child_exited| may be NULL.) 310 // child process has terminated. (|child_exited| may be NULL.)
296 bool DidProcessCrash(bool* child_exited, ProcessHandle handle); 311 bool DidProcessCrash(bool* child_exited, ProcessHandle handle);
297 312
298 // Waits for process to exit. In POSIX systems, if the process hasn't been 313 // Waits for process to exit. In POSIX systems, if the process hasn't been
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 // instance running inside the parent. The parent's Breakpad instance should 620 // instance running inside the parent. The parent's Breakpad instance should
606 // not handle the child's exceptions. Calling RestoreDefaultExceptionHandler 621 // not handle the child's exceptions. Calling RestoreDefaultExceptionHandler
607 // in the child after forking will restore the standard exception handler. 622 // in the child after forking will restore the standard exception handler.
608 // See http://crbug.com/20371/ for more details. 623 // See http://crbug.com/20371/ for more details.
609 void RestoreDefaultExceptionHandler(); 624 void RestoreDefaultExceptionHandler();
610 #endif // defined(OS_MACOSX) 625 #endif // defined(OS_MACOSX)
611 626
612 } // namespace base 627 } // namespace base
613 628
614 #endif // BASE_PROCESS_UTIL_H_ 629 #endif // BASE_PROCESS_UTIL_H_
OLDNEW
« no previous file with comments | « no previous file | base/process_util_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698