process_handle_linux.cc revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright (c) 2013 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/process_handle.h"
6
7#include "base/file_util.h"
8#include "base/process/internal_linux.h"
9
10namespace base {
11
12ProcessId GetParentProcessId(ProcessHandle process) {
13  ProcessId pid =
14      internal::ReadProcStatsAndGetFieldAsInt(process, internal::VM_PPID);
15  if (pid)
16    return pid;
17  return -1;
18}
19
20FilePath GetProcessExecutablePath(ProcessHandle process) {
21  FilePath stat_file = internal::GetProcPidDir(process).Append("exe");
22  FilePath exe_name;
23  if (!ReadSymbolicLink(stat_file, &exe_name)) {
24    // No such process.  Happens frequently in e.g. TerminateAllChromeProcesses
25    return FilePath();
26  }
27  return exe_name;
28}
29
30}  // namespace base
31