17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/process/process_handle.h" 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/files/file_util.h" 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/process/internal_linux.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace base { 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochProcessId GetParentProcessId(ProcessHandle process) { 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ProcessId pid = 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) internal::ReadProcStatsAndGetFieldAsInt64(process, internal::VM_PPID); 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch if (pid) 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return pid; 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return -1; 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochFilePath GetProcessExecutablePath(ProcessHandle process) { 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FilePath stat_file = internal::GetProcPidDir(process).Append("exe"); 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FilePath exe_name; 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!ReadSymbolicLink(stat_file, &exe_name)) { 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // No such process. Happens frequently in e.g. TerminateAllChromeProcesses 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return FilePath(); 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return exe_name; 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace base 31