1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file. 4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#ifndef BASE_PROCESS_PROCESS_PROCESS_H_ 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#define BASE_PROCESS_PROCESS_PROCESS_H_ 7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "base/base_export.h" 9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "base/basictypes.h" 10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "base/process/process_handle.h" 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "build/build_config.h" 12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace base { 14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass BASE_EXPORT Process { 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch public: 17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch Process() : process_(kNullProcessHandle) { 18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch explicit Process(ProcessHandle handle) : process_(handle) { 21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // A handle to the current process. 24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch static Process Current(); 25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch static bool CanBackgroundProcesses(); 27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Get/Set the handle for this process. The handle will be 0 if the process 29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // is no longer running. 30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ProcessHandle handle() const { return process_; } 31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void set_handle(ProcessHandle handle) { 32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch process_ = handle; 33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Get the PID for this process. 36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ProcessId pid() const; 37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Is the this process the current process. 39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool is_current() const; 40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Close the process handle. This will not terminate the process. 42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void Close(); 43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Terminates the process with extreme prejudice. The given result code will 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // be the exit code of the process. If the process has already exited, this 46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // will do nothing. 47ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void Terminate(int result_code); 48ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // A process is backgrounded when it's priority is lower than normal. 50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Return true if this process is backgrounded, false otherwise. 51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool IsProcessBackgrounded() const; 52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Set a process as backgrounded. If value is true, the priority 54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // of the process will be lowered. If value is false, the priority 55ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // of the process will be made "normal" - equivalent to default 56ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // process priority. 57ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Returns true if the priority was changed, false otherwise. 58ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool SetProcessBackgrounded(bool value); 59ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 60ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Returns an integer representing the priority of a process. The meaning 61ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // of this value is OS dependent. 62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch int GetPriority() const; 63ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch private: 65ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ProcessHandle process_; 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}; 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace base 69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 70ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif // BASE_PROCESS_PROCESS_PROCESS_H_ 71