• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/process.h"
6 
7 #include <sys/types.h>
8 #include <sys/time.h>
9 #include <sys/resource.h>
10 
11 #include "base/process_util.h"
12 #include "base/logging.h"
13 
14 namespace base {
15 
16 // static
Current()17 Process Process::Current() {
18   return Process(GetCurrentProcessHandle());
19 }
20 
pid() const21 ProcessId Process::pid() const {
22   if (process_ == 0)
23     return 0;
24 
25   return GetProcId(process_);
26 }
27 
is_current() const28 bool Process::is_current() const {
29   return process_ == GetCurrentProcessHandle();
30 }
31 
Close()32 void Process::Close() {
33   process_ = 0;
34   // if the process wasn't terminated (so we waited) or the state
35   // wasn't already collected w/ a wait from process_utils, we're gonna
36   // end up w/ a zombie when it does finally exit.
37 }
38 
Terminate(int result_code)39 void Process::Terminate(int result_code) {
40   // result_code isn't supportable.
41   if (!process_)
42     return;
43   // We don't wait here. It's the responsibility of other code to reap the
44   // child.
45   KillProcess(process_, result_code, false);
46 }
47 
48 #if !defined(OS_LINUX)
IsProcessBackgrounded() const49 bool Process::IsProcessBackgrounded() const {
50   // See SetProcessBackgrounded().
51   return false;
52 }
53 
SetProcessBackgrounded(bool value)54 bool Process::SetProcessBackgrounded(bool value) {
55   // POSIX only allows lowering the priority of a process, so if we
56   // were to lower it we wouldn't be able to raise it back to its initial
57   // priority.
58   return false;
59 }
60 #endif
61 
GetPriority() const62 int Process::GetPriority() const {
63   DCHECK(process_);
64   return getpriority(PRIO_PROCESS, process_);
65 }
66 
67 }  // namspace base
68