1 //! A command which prints out information about the process it runs in.
2
3 use rustix::io;
4
5 #[cfg(all(feature = "process", feature = "param"))]
6 #[cfg(not(windows))]
main() -> io::Result<()>7 fn main() -> io::Result<()> {
8 use rustix::param::*;
9 use rustix::process::*;
10
11 println!("Pid: {}", getpid().as_raw_nonzero());
12 println!("Parent Pid: {}", Pid::as_raw(getppid()));
13 println!("Group Pid: {}", getpgrp().as_raw_nonzero());
14 if let Some(ppid) = getppid() {
15 println!(
16 "Parent Group Pid: {}",
17 getpgid(Some(ppid)).unwrap().as_raw_nonzero()
18 );
19 }
20 println!("Uid: {}", getuid().as_raw());
21 println!("Gid: {}", getgid().as_raw());
22 #[cfg(any(
23 all(target_os = "android", target_pointer_width = "64"),
24 target_os = "linux",
25 ))]
26 {
27 let (a, b) = linux_hwcap();
28 println!("Linux hwcap: {:#x}, {:#x}", a, b);
29 }
30 println!("Page size: {}", page_size());
31 println!("Clock ticks/sec: {}", clock_ticks_per_second());
32 println!("Uname: {:?}", uname());
33 #[cfg(not(target_os = "fuchsia"))]
34 {
35 println!("Process group priority: {}", getpriority_pgrp(None)?);
36 println!("Process priority: {}", getpriority_process(None)?);
37 println!("User priority: {}", getpriority_user(Uid::ROOT)?);
38 }
39 println!(
40 "Current working directory: {}",
41 getcwd(Vec::new())?.to_string_lossy()
42 );
43 #[cfg(not(target_os = "fuchsia"))]
44 {
45 println!("Cpu Limit: {:?}", getrlimit(Resource::Cpu));
46 println!("Fsize Limit: {:?}", getrlimit(Resource::Fsize));
47 println!("Data Limit: {:?}", getrlimit(Resource::Data));
48 println!("Stack Limit: {:?}", getrlimit(Resource::Stack));
49 #[cfg(not(target_os = "haiku"))]
50 println!("Core Limit: {:?}", getrlimit(Resource::Core));
51 #[cfg(not(any(target_os = "haiku", target_os = "illumos", target_os = "solaris")))]
52 println!("Rss Limit: {:?}", getrlimit(Resource::Rss));
53 #[cfg(not(any(target_os = "haiku", target_os = "illumos", target_os = "solaris")))]
54 println!("Nproc Limit: {:?}", getrlimit(Resource::Nproc));
55 #[cfg(not(target_os = "solaris"))]
56 println!("Nofile Limit: {:?}", getrlimit(Resource::Nofile));
57 #[cfg(not(any(target_os = "haiku", target_os = "illumos", target_os = "solaris")))]
58 println!("Memlock Limit: {:?}", getrlimit(Resource::Memlock));
59 #[cfg(not(target_os = "openbsd"))]
60 println!("As Limit: {:?}", getrlimit(Resource::As));
61 #[cfg(not(any(
62 target_os = "dragonfly",
63 target_os = "freebsd",
64 target_os = "haiku",
65 target_os = "illumos",
66 target_os = "ios",
67 target_os = "macos",
68 target_os = "netbsd",
69 target_os = "openbsd",
70 target_os = "solaris",
71 )))]
72 println!("Locks Limit: {:?}", getrlimit(Resource::Locks));
73 #[cfg(not(any(
74 target_os = "dragonfly",
75 target_os = "freebsd",
76 target_os = "haiku",
77 target_os = "illumos",
78 target_os = "ios",
79 target_os = "macos",
80 target_os = "netbsd",
81 target_os = "openbsd",
82 target_os = "solaris",
83 )))]
84 println!("Sigpending Limit: {:?}", getrlimit(Resource::Sigpending));
85 #[cfg(not(any(
86 target_os = "dragonfly",
87 target_os = "freebsd",
88 target_os = "haiku",
89 target_os = "illumos",
90 target_os = "ios",
91 target_os = "macos",
92 target_os = "netbsd",
93 target_os = "openbsd",
94 target_os = "solaris",
95 )))]
96 println!("Msgqueue Limit: {:?}", getrlimit(Resource::Msgqueue));
97 #[cfg(not(any(
98 target_os = "dragonfly",
99 target_os = "freebsd",
100 target_os = "haiku",
101 target_os = "illumos",
102 target_os = "ios",
103 target_os = "macos",
104 target_os = "netbsd",
105 target_os = "openbsd",
106 target_os = "solaris",
107 )))]
108 println!("Nice Limit: {:?}", getrlimit(Resource::Nice));
109 #[cfg(not(any(
110 target_os = "dragonfly",
111 target_os = "freebsd",
112 target_os = "haiku",
113 target_os = "illumos",
114 target_os = "ios",
115 target_os = "macos",
116 target_os = "netbsd",
117 target_os = "openbsd",
118 target_os = "solaris",
119 )))]
120 println!("Rtprio Limit: {:?}", getrlimit(Resource::Rtprio));
121 #[cfg(not(any(
122 target_os = "android",
123 target_os = "dragonfly",
124 target_os = "emscripten",
125 target_os = "freebsd",
126 target_os = "haiku",
127 target_os = "illumos",
128 target_os = "ios",
129 target_os = "macos",
130 target_os = "netbsd",
131 target_os = "openbsd",
132 target_os = "solaris",
133 )))]
134 println!("Rttime Limit: {:?}", getrlimit(Resource::Rttime));
135 }
136 #[cfg(any(
137 all(target_os = "android", target_pointer_width = "64"),
138 target_os = "linux"
139 ))]
140 println!("Execfn: {:?}", linux_execfn());
141 Ok(())
142 }
143
144 #[cfg(any(windows, not(all(feature = "process", feature = "param"))))]
main() -> io::Result<()>145 fn main() -> io::Result<()> {
146 unimplemented!()
147 }
148