Android-cuttlefish cvd tool
pidfd.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2024 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#ifndef ANDROID_DEVICE_GOOGLE_CUTTLEFISH_HOST_COMMANDS_SANDBOX_PROCESS_PIDFD_H
17#define ANDROID_DEVICE_GOOGLE_CUTTLEFISH_HOST_COMMANDS_SANDBOX_PROCESS_PIDFD_H
18
19#include <sys/types.h>
20
21#include <utility>
22#include <vector>
23
24#include "absl/status/statusor.h"
25#include "absl/types/span.h"
26#include "sandboxed_api/util/fileops.h"
27
29
30class PidFd {
31 public:
37 static absl::StatusOr<PidFd> FromRunningProcess(pid_t pid);
38
41 static absl::StatusOr<PidFd> LaunchSubprocess(
42 absl::Span<const std::string> argv,
43 std::vector<std::pair<sapi::file_util::fileops::FDCloser, int>> fds,
44 absl::Span<const std::string> env);
45
46 int Get() const;
47
54 absl::StatusOr<
55 std::vector<std::pair<sapi::file_util::fileops::FDCloser, int>>>
56 AllFds();
57 absl::StatusOr<std::vector<std::string>> Argv();
58 absl::StatusOr<std::vector<std::string>> Env();
59
65
66 private:
67 PidFd(sapi::file_util::fileops::FDCloser, pid_t);
68 absl::Status SendSignal(int signal);
69
70 sapi::file_util::fileops::FDCloser fd_;
71 pid_t pid_;
72};
73
74} // namespace cuttlefish::process_sandboxer
75#endif
absl::Status SendSignal(int signal)
Definition: pidfd.cpp:274
static absl::StatusOr< PidFd > FromRunningProcess(pid_t pid)
Definition: pidfd.cpp:55
pid_t pid_
Definition: pidfd.h:71
static absl::StatusOr< PidFd > LaunchSubprocess(absl::Span< const std::string > argv, std::vector< std::pair< sapi::file_util::fileops::FDCloser, int > > fds, absl::Span< const std::string > env)
Definition: pidfd.cpp:63
sapi::file_util::fileops::FDCloser fd_
Definition: pidfd.h:70
absl::Status HaltHierarchy()
Definition: pidfd.cpp:201
absl::StatusOr< std::vector< std::pair< sapi::file_util::fileops::FDCloser, int > > > AllFds()
Definition: pidfd.cpp:140
absl::StatusOr< std::vector< std::string > > Argv()
Definition: pidfd.cpp:193
absl::Status HaltChildHierarchy()
Definition: pidfd.cpp:254
absl::StatusOr< std::vector< std::string > > Env()
Definition: pidfd.cpp:197
PidFd(sapi::file_util::fileops::FDCloser, pid_t)
Definition: pidfd.cpp:136
int Get() const
Definition: pidfd.cpp:138
static void Status(const std::string &message)
Definition: fastboot.cpp:205
Definition: credentialed_unix_server.cpp:30