c - Unix top 命令列从另一个 C 程序中选择?

标签 c unix top-command interactive-mode

有没有办法在不进入交互模式的情况下选择标准 unix top 命令显示的列。我希望能够从另一个 C 程序中调用 top 命令。

最佳答案

查看top的命令行选项。 -b 用于非交互式使用。也许您需要调用 -n 来告诉它要使用多少次迭代。

top -b -n1 | other_program

至于选择列,可能需要一种更具交互性的方法(例如在 Tcl 中使用伪 tty 或 Expect)来操作 top。或者直接从 /proc/...

收集所需的信息 <小时/>

举个例子,看看大多数进程可用的丰富信息集,在这个例子中,我选择了 pid 1429,我用来编写此内容的 Firefox 浏览器。

[wally@f17tb3d VMs]$ ll /proc/1429/
total 0
dr-xr-xr-x.  2 wally wally 0 Apr  4 05:58 attr
-rw-r--r--.  1 wally wally 0 Apr  4 05:58 autogroup
-r--------.  1 wally wally 0 Apr  4 05:58 auxv
-r--r--r--.  1 wally wally 0 Apr  4 05:58 cgroup
--w-------.  1 wally wally 0 Apr  4 05:58 clear_refs
-r--r--r--.  1 wally wally 0 Mar 10 16:55 cmdline
-rw-r--r--.  1 wally wally 0 Apr  4 05:58 comm
-rw-r--r--.  1 wally wally 0 Apr  4 05:58 coredump_filter
-r--r--r--.  1 wally wally 0 Apr  4 05:58 cpuset
lrwxrwxrwx.  1 wally wally 0 Apr  4 05:58 cwd -> /home/wally
-r--------.  1 wally wally 0 Apr  4 05:58 environ
lrwxrwxrwx.  1 wally wally 0 Mar 23 18:37 exe -> /usr/lib64/firefox/firefox
dr-x------.  2 wally wally 0 Apr  4 05:58 fd
dr-x------.  2 wally wally 0 Apr  4 05:58 fdinfo
-r--------.  1 wally wally 0 Apr  4 05:58 io
-r--r--r--.  1 wally wally 0 Apr  4 05:58 limits
-rw-r--r--.  1 wally wally 0 Apr  4 05:58 loginuid
-r--r--r--.  1 wally wally 0 Apr  4 05:58 maps
-rw-------.  1 wally wally 0 Apr  4 05:58 mem
-r--r--r--.  1 wally wally 0 Apr  4 05:58 mountinfo
-r--r--r--.  1 wally wally 0 Apr  4 05:58 mounts
-r--------.  1 wally wally 0 Apr  4 05:58 mountstats
dr-xr-xr-x.  5 wally wally 0 Apr  4 05:58 net
dr-x--x--x.  2 wally wally 0 Apr  4 05:58 ns
-r--r--r--.  1 wally wally 0 Apr  4 05:58 numa_maps
-rw-r--r--.  1 wally wally 0 Apr  4 05:58 oom_adj
-r--r--r--.  1 wally wally 0 Apr  4 05:58 oom_score
-rw-r--r--.  1 wally wally 0 Apr  4 05:58 oom_score_adj
-r--r--r--.  1 wally wally 0 Apr  4 05:58 pagemap
-r--r--r--.  1 wally wally 0 Apr  4 05:58 personality
lrwxrwxrwx.  1 wally wally 0 Apr  4 05:58 root -> /
-rw-r--r--.  1 wally wally 0 Apr  4 05:58 sched
-r--r--r--.  1 wally wally 0 Apr  4 05:58 sessionid
-r--r--r--.  1 wally wally 0 Apr  4 05:58 smaps
-r--r--r--.  1 wally wally 0 Apr  4 05:58 stack
-r--r--r--.  1 wally wally 0 Mar 10 16:56 stat
-r--r--r--.  1 wally wally 0 Apr  4 05:56 statm
-r--r--r--.  1 wally wally 0 Mar 10 16:56 status
-r--r--r--.  1 wally wally 0 Apr  4 05:58 syscall
dr-xr-xr-x. 43 wally wally 0 Mar 10 16:56 task
-r--r--r--.  1 wally wally 0 Apr  4 05:58 wchan

例如命令行:

[wally@f17tb3d VMs]$ cat /proc/1429/cmdline 
/usr/lib64/firefox/firefox[wally@f17tb3d VMs]$ 

关于c - Unix top 命令列从另一个 C 程序中选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851232/

相关文章:

C 帮助 - 具有两个值的同一变量

unix - 如果找到差异则失败(c-shell)

unix - 从 diff 重新创建文件

linux - MacOS 中的 top -H 选项

background-process - Linux top 不以批处理模式将完整命令名作为 nohup 进程打印到文件

c - C语言浮点除法

c - 打印带重复的排序排列

c++ - 如何通过程序扫描系统内存?

c++ - 在 Unix 终端中打开程序时,有没有办法让程序名称和它的输入在同一行?

linux - 使用 Top 显示脚本的输出