Vim*_*mzy 5 c linux process execvp
我目前正在我的一个 c 程序中执行以下 Linux 命令以显示正在运行的进程。无论如何我可以修改它以显示停止的进程和正在运行的进程吗?
char *const parmList[] = {"ps","-o","pid,ppid,time","-g","-r",groupProcessID,NULL};
execvp("/bin/ps", parmList);
Run Code Online (Sandbox Code Playgroud)
jobs -s list的最高进程为SIGTSTP,noSIGSTOP。主要区别是SIGSTOP不可忽视的。
您可以SIGTSTP使用^Z或来自其他外壳的进程使用kill -TSTP PROC_PID,然后使用 列出jobs。
但是如何列出收到SIGSTOP 的PID呢?获得这个的一种方法是
ps -e -o stat,command,pid | grep '^S '
Run Code Online (Sandbox Code Playgroud)
我发现这两个非常有用,可以停止/继续一些进程(通常是浏览器):
kill -STOP $(pgrep procName)
kill -CONT $(pgrep procName)
Run Code Online (Sandbox Code Playgroud)
或与 killall
killall -STOP procName
killall -CONT procName
Run Code Online (Sandbox Code Playgroud)
ps -e 列出所有进程。
jobs列出当前停止或在后台的所有进程。
因此,您可以jobs使用以下命令运行命令execvp:
char *arg = {"jobs", NULL};
execvp(arg[0], arg);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12180 次 |
| 最近记录: |