| 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 int GetCurrentProcId(); | 59 int GetCurrentProcId(); |
| 60 | 60 |
| 61 // Returns the ProcessHandle of the current process. | 61 // Returns the ProcessHandle of the current process. |
| 62 ProcessHandle GetCurrentProcessHandle(); | 62 ProcessHandle GetCurrentProcessHandle(); |
| 63 | 63 |
| 64 // Returns the unique ID for the specified process. This is functionally the | 64 // Returns the unique ID for the specified process. This is functionally the |
| 65 // same as Windows' GetProcessId(), but works on versions of Windows before | 65 // same as Windows' GetProcessId(), but works on versions of Windows before |
| 66 // Win XP SP1 as well. | 66 // Win XP SP1 as well. |
| 67 int GetProcId(ProcessHandle process); | 67 int GetProcId(ProcessHandle process); |
| 68 | 68 |
| 69 #if defined(OS_POSIX) |
| 70 // Returns the maximum number of files that a process can have open. |
| 71 // Returns 0 on error. |
| 72 int GetMaxFilesOpenInProcess(); |
| 73 #endif |
| 74 |
| 69 #if defined(OS_WIN) | 75 #if defined(OS_WIN) |
| 70 // Runs the given application name with the given command line. Normally, the | 76 // Runs the given application name with the given command line. Normally, the |
| 71 // first command line argument should be the path to the process, and don't | 77 // first command line argument should be the path to the process, and don't |
| 72 // forget to quote it. | 78 // forget to quote it. |
| 73 // | 79 // |
| 74 // If wait is true, it will block and wait for the other process to finish, | 80 // If wait is true, it will block and wait for the other process to finish, |
| 75 // otherwise, it will just continue asynchronously. | 81 // otherwise, it will just continue asynchronously. |
| 76 // | 82 // |
| 77 // Example (including literal quotes) | 83 // Example (including literal quotes) |
| 78 // cmdline = "c:\windows\explorer.exe" -foo "c:\bar\" | 84 // cmdline = "c:\windows\explorer.exe" -foo "c:\bar\" |
| 79 // | 85 // |
| 80 // If process_handle is non-NULL, the process handle of the launched app will be | 86 // If process_handle is non-NULL, the process handle of the launched app will be |
| 81 // stored there on a successful launch. | 87 // stored there on a successful launch. |
| 82 // NOTE: In this case, the caller is responsible for closing the handle so | 88 // NOTE: In this case, the caller is responsible for closing the handle so |
| 83 // that it doesn't leak! | 89 // that it doesn't leak! |
| 84 bool LaunchApp(const std::wstring& cmdline, | 90 bool LaunchApp(const std::wstring& cmdline, |
| 85 bool wait, bool start_hidden, ProcessHandle* process_handle); | 91 bool wait, bool start_hidden, ProcessHandle* process_handle); |
| 86 #elif defined(OS_POSIX) | 92 #elif defined(OS_POSIX) |
| 87 // Runs the application specified in argv[0] with the command line argv. | 93 // Runs the application specified in argv[0] with the command line argv. |
| 88 // Both the elements of argv and argv itself must be terminated with a null | 94 // Both the elements of argv and argv itself must be terminated with a null |
| 89 // byte. | 95 // byte. |
| 96 // Before launching all FDs open in the parent process will be marked as |
| 97 // close-on-exec. |fds_to_remap| defines a mapping of src fd->dest fd to |
| 98 // propagate FDs into the child process. |
| 90 // | 99 // |
| 91 // As above, if wait is true, execute synchronously. The pid will be stored | 100 // As above, if wait is true, execute synchronously. The pid will be stored |
| 92 // in process_handle if that pointer is non-null. | 101 // in process_handle if that pointer is non-null. |
| 93 // | 102 // |
| 94 // Note that the first argument in argv must point to the filename, | 103 // Note that the first argument in argv must point to the filename, |
| 95 // and must be fully specified. | 104 // and must be fully specified. |
| 105 typedef std::vector<std::pair<int, int> > file_handle_mapping_vector; |
| 96 bool LaunchApp(const std::vector<std::string>& argv, | 106 bool LaunchApp(const std::vector<std::string>& argv, |
| 107 const file_handle_mapping_vector& fds_to_remap, |
| 97 bool wait, ProcessHandle* process_handle); | 108 bool wait, ProcessHandle* process_handle); |
| 98 #endif | 109 #endif |
| 99 | 110 |
| 100 // Execute the application specified by cl. This function delegates to one | 111 // Execute the application specified by cl. This function delegates to one |
| 101 // of the above two platform-specific functions. | 112 // of the above two platform-specific functions. |
| 102 bool LaunchApp(const CommandLine& cl, | 113 bool LaunchApp(const CommandLine& cl, |
| 103 bool wait, bool start_hidden, ProcessHandle* process_handle); | 114 bool wait, bool start_hidden, ProcessHandle* process_handle); |
| 104 | 115 |
| 105 // Used to filter processes by process ID. | 116 // Used to filter processes by process ID. |
| 106 class ProcessFilter { | 117 class ProcessFilter { |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 // overflow. Has no effect if the OS doesn't provide the necessary facility. | 329 // overflow. Has no effect if the OS doesn't provide the necessary facility. |
| 319 void EnableTerminationOnHeapCorruption(); | 330 void EnableTerminationOnHeapCorruption(); |
| 320 | 331 |
| 321 // If supported on the platform, and the user has sufficent rights, increase | 332 // If supported on the platform, and the user has sufficent rights, increase |
| 322 // the current process's scheduling priority to a high priority. | 333 // the current process's scheduling priority to a high priority. |
| 323 void RaiseProcessToHighPriority(); | 334 void RaiseProcessToHighPriority(); |
| 324 | 335 |
| 325 } // namespace base | 336 } // namespace base |
| 326 | 337 |
| 327 #endif // BASE_PROCESS_UTIL_H_ | 338 #endif // BASE_PROCESS_UTIL_H_ |
| OLD | NEW |