Lines Matching refs:pid
78 pid_t pid = fork(); in ExecWithoutWait() local
79 if (pid == 0) { in ExecWithoutWait()
97 } else if (pid == -1) { in ExecWithoutWait()
103 return pid; in ExecWithoutWait()
107 ExecResult WaitChild(pid_t pid, in WaitChild() argument
114 if (TEMP_FAILURE_RETRY(waitid(P_PID, pid, &info, options)) != 0) { in WaitChild()
117 pid, in WaitChild()
121 if (info.si_pid != pid) { in WaitChild()
124 pid, in WaitChild()
141 ExecResult WaitChildWithTimeoutFallback(pid_t pid, in WaitChildWithTimeoutFallback() argument
154 kill(pid, SIGKILL); in WaitChildWithTimeoutFallback()
158 ExecResult result = WaitChild(pid, arg_vector, /*no_wait=*/true, error_msg); in WaitChildWithTimeoutFallback()
180 ExecResult WaitChildWithTimeout(pid_t pid, in WaitChildWithTimeout() argument
186 kill(pid, SIGKILL); in WaitChildWithTimeout()
188 WaitChild(pid, arg_vector, /*no_wait=*/true, &ignored_error_msg); in WaitChildWithTimeout()
199 *error_msg = StringPrintf("poll failed for pid %d: %s", pid, strerror(errno)); in WaitChildWithTimeout()
211 return WaitChild(pid, arg_vector, /*no_wait=*/true, error_msg); in WaitChildWithTimeout()
276 pid_t pid = ExecWithoutWait(arg_vector, new_process_group, error_msg); in ExecAndReturnResult() local
277 if (pid == -1) { in ExecAndReturnResult()
281 callbacks.on_start(pid); in ExecAndReturnResult()
286 unique_fd pidfd = PidfdOpen(pid); in ExecAndReturnResult()
289 WaitChildWithTimeout(pid, std::move(pidfd), arg_vector, timeout_sec * 1000, error_msg); in ExecAndReturnResult()
292 "pidfd_open failed for pid %d: %s, falling back", pid, strerror(errno)); in ExecAndReturnResult()
293 result = WaitChildWithTimeoutFallback(pid, arg_vector, timeout_sec * 1000, error_msg); in ExecAndReturnResult()
296 result = WaitChild(pid, arg_vector, /*no_wait=*/true, error_msg); in ExecAndReturnResult()
301 if (!GetStat(pid, stat, &local_error_msg)) { in ExecAndReturnResult()
306 callbacks.on_end(pid); in ExecAndReturnResult()
310 if (WaitChild(pid, arg_vector, /*no_wait=*/false, &local_error_msg).status == in ExecAndReturnResult()
333 unique_fd ExecUtils::PidfdOpen(pid_t pid) const { return art::PidfdOpen(pid, /*flags=*/0); } in PidfdOpen()
335 std::string ExecUtils::GetProcStat(pid_t pid) const { in GetProcStat()
337 if (!ReadFileToString(StringPrintf("/proc/%d/stat", pid), &stat_content)) { in GetProcStat()
354 bool ExecUtils::GetStat(pid_t pid, in GetStat() argument
361 std::string stat_content = GetProcStat(pid); in GetStat()
363 *error_msg = StringPrintf("Failed to read /proc/%d/stat: %s", pid, strerror(errno)); in GetStat()
368 *error_msg = StringPrintf("Failed to parse /proc/%d/stat '%s'", pid, stat_content.c_str()); in GetStat()