OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 | 10 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 // A minimalistic but hopefully cross-platform set of exit codes. | 55 // A minimalistic but hopefully cross-platform set of exit codes. |
56 // Do not change the enumeration values or you will break third-party | 56 // Do not change the enumeration values or you will break third-party |
57 // installers. | 57 // installers. |
58 enum { | 58 enum { |
59 PROCESS_END_NORMAL_TERMINATON = 0, | 59 PROCESS_END_NORMAL_TERMINATON = 0, |
60 PROCESS_END_KILLED_BY_USER = 1, | 60 PROCESS_END_KILLED_BY_USER = 1, |
61 PROCESS_END_PROCESS_WAS_HUNG = 2 | 61 PROCESS_END_PROCESS_WAS_HUNG = 2 |
62 }; | 62 }; |
63 | 63 |
64 // Returns the id of the current process. | 64 // Returns the id of the current process. |
65 int GetCurrentProcId(); | 65 ProcessId GetCurrentProcId(); |
66 | 66 |
67 // Returns the ProcessHandle of the current process. | 67 // Returns the ProcessHandle of the current process. |
68 ProcessHandle GetCurrentProcessHandle(); | 68 ProcessHandle GetCurrentProcessHandle(); |
69 | 69 |
70 // Converts a PID to a process handle. This handle must be closed by | 70 // Converts a PID to a process handle. This handle must be closed by |
71 // CloseProcessHandle when you are done with it. | 71 // CloseProcessHandle when you are done with it. |
72 ProcessHandle OpenProcessHandle(int pid); | 72 ProcessHandle OpenProcessHandle(ProcessId pid); |
73 | 73 |
74 // Closes the process handle opened by OpenProcessHandle. | 74 // Closes the process handle opened by OpenProcessHandle. |
75 void CloseProcessHandle(ProcessHandle process); | 75 void CloseProcessHandle(ProcessHandle process); |
76 | 76 |
77 // Returns the unique ID for the specified process. This is functionally the | 77 // Returns the unique ID for the specified process. This is functionally the |
78 // same as Windows' GetProcessId(), but works on versions of Windows before | 78 // same as Windows' GetProcessId(), but works on versions of Windows before |
79 // Win XP SP1 as well. | 79 // Win XP SP1 as well. |
80 int GetProcId(ProcessHandle process); | 80 ProcessId GetProcId(ProcessHandle process); |
81 | 81 |
82 #if defined(OS_POSIX) | 82 #if defined(OS_POSIX) |
83 // Sets all file descriptors to close on exec except for stdin, stdout | 83 // Sets all file descriptors to close on exec except for stdin, stdout |
84 // and stderr. | 84 // and stderr. |
85 void SetAllFDsToCloseOnExec(); | 85 void SetAllFDsToCloseOnExec(); |
86 #endif | 86 #endif |
87 | 87 |
88 #if defined(OS_WIN) | 88 #if defined(OS_WIN) |
89 // Runs the given application name with the given command line. Normally, the | 89 // Runs the given application name with the given command line. Normally, the |
90 // first command line argument should be the path to the process, and don't | 90 // first command line argument should be the path to the process, and don't |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 // Execute the application specified by cl. This function delegates to one | 122 // Execute the application specified by cl. This function delegates to one |
123 // of the above two platform-specific functions. | 123 // of the above two platform-specific functions. |
124 bool LaunchApp(const CommandLine& cl, | 124 bool LaunchApp(const CommandLine& cl, |
125 bool wait, bool start_hidden, ProcessHandle* process_handle); | 125 bool wait, bool start_hidden, ProcessHandle* process_handle); |
126 | 126 |
127 // Used to filter processes by process ID. | 127 // Used to filter processes by process ID. |
128 class ProcessFilter { | 128 class ProcessFilter { |
129 public: | 129 public: |
130 // Returns true to indicate set-inclusion and false otherwise. This method | 130 // Returns true to indicate set-inclusion and false otherwise. This method |
131 // should not have side-effects and should be idempotent. | 131 // should not have side-effects and should be idempotent. |
132 virtual bool Includes(uint32 pid, uint32 parent_pid) const = 0; | 132 virtual bool Includes(ProcessId pid, ProcessId parent_pid) const = 0; |
133 virtual ~ProcessFilter() { } | 133 virtual ~ProcessFilter() { } |
134 }; | 134 }; |
135 | 135 |
136 // Returns the number of processes on the machine that are running from the | 136 // Returns the number of processes on the machine that are running from the |
137 // given executable name. If filter is non-null, then only processes selected | 137 // given executable name. If filter is non-null, then only processes selected |
138 // by the filter will be counted. | 138 // by the filter will be counted. |
139 int GetProcessCount(const std::wstring& executable_name, | 139 int GetProcessCount(const std::wstring& executable_name, |
140 const ProcessFilter* filter); | 140 const ProcessFilter* filter); |
141 | 141 |
142 // Attempts to kill all the processes on the current machine that were launched | 142 // Attempts to kill all the processes on the current machine that were launched |
143 // from the given executable name, ending them with the given exit code. If | 143 // from the given executable name, ending them with the given exit code. If |
144 // filter is non-null, then only processes selected by the filter are killed. | 144 // filter is non-null, then only processes selected by the filter are killed. |
145 // Returns false if all processes were able to be killed off, false if at least | 145 // Returns false if all processes were able to be killed off, false if at least |
146 // one couldn't be killed. | 146 // one couldn't be killed. |
147 bool KillProcesses(const std::wstring& executable_name, int exit_code, | 147 bool KillProcesses(const std::wstring& executable_name, int exit_code, |
148 const ProcessFilter* filter); | 148 const ProcessFilter* filter); |
149 | 149 |
150 // Attempts to kill the process identified by the given process | 150 // Attempts to kill the process identified by the given process |
151 // entry structure, giving it the specified exit code. If |wait| is true, wait | 151 // entry structure, giving it the specified exit code. If |wait| is true, wait |
152 // for the process to be actually terminated before returning. | 152 // for the process to be actually terminated before returning. |
153 // Returns true if this is successful, false otherwise. | 153 // Returns true if this is successful, false otherwise. |
154 bool KillProcess(ProcessHandle process, int exit_code, bool wait); | 154 bool KillProcess(ProcessHandle process, int exit_code, bool wait); |
155 #if defined(OS_WIN) | 155 #if defined(OS_WIN) |
156 bool KillProcessById(DWORD process_id, int exit_code, bool wait); | 156 bool KillProcessById(ProcessId process_id, int exit_code, bool wait); |
157 #endif | 157 #endif |
158 | 158 |
159 // Get the termination status (exit code) of the process and return true if the | 159 // Get the termination status (exit code) of the process and return true if the |
160 // status indicates the process crashed. It is an error to call this if the | 160 // status indicates the process crashed. It is an error to call this if the |
161 // process hasn't terminated yet. | 161 // process hasn't terminated yet. |
162 bool DidProcessCrash(ProcessHandle handle); | 162 bool DidProcessCrash(ProcessHandle handle); |
163 | 163 |
164 // Waits for process to exit. In POSIX systems, if the process hasn't been | 164 // Waits for process to exit. In POSIX systems, if the process hasn't been |
165 // signaled then puts the exit code in |exit_code|; otherwise it's considered | 165 // signaled then puts the exit code in |exit_code|; otherwise it's considered |
166 // a failure. On Windows |exit_code| is always filled. Returns true on success, | 166 // a failure. On Windows |exit_code| is always filled. Returns true on success, |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 // overflow. Has no effect if the OS doesn't provide the necessary facility. | 353 // overflow. Has no effect if the OS doesn't provide the necessary facility. |
354 void EnableTerminationOnHeapCorruption(); | 354 void EnableTerminationOnHeapCorruption(); |
355 | 355 |
356 // If supported on the platform, and the user has sufficent rights, increase | 356 // If supported on the platform, and the user has sufficent rights, increase |
357 // the current process's scheduling priority to a high priority. | 357 // the current process's scheduling priority to a high priority. |
358 void RaiseProcessToHighPriority(); | 358 void RaiseProcessToHighPriority(); |
359 | 359 |
360 } // namespace base | 360 } // namespace base |
361 | 361 |
362 #endif // BASE_PROCESS_UTIL_H_ | 362 #endif // BASE_PROCESS_UTIL_H_ |
OLD | NEW |