c - 使用 ps aux,进程 11558 和 16290 的路径位于括号中 : "(dd)" and "(security_authra)". 这些是什么?

标签 c process operating-system ps low-level

我目前使用的是 Mac,无法在另一台 Mac 上尝试,所以我不确定确切的进程号是否会改变。我编写了一个 C 程序,它为我提供了进程列表,它在这两个问题上遇到了困难,并返回了我“?”反而。我使用命令行命令 ps aux 列出了系统上的所有进程,与其他进程不同的是,进程 11558 和 16290 的路径都放在括号中,并且非常奇特。这里发生了什么?什么是路径 (dd) 和 (security_authra)?有没有办法可以访问“实际”路径?

谢谢

最佳答案

当进程更改其命令行参数时,就会发生这种情况。例如在我的系统上我有这个过程:

$ ps aux -q 1478
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
rich      1478  0.0  0.0  99208  3340 ?        S    19:14   0:00 (sd-pam)

但是 ps 只是报告 /proc 中的命令行参数:

$ strings /proc/1478/cmdline
(sd-pam)

但是仍然可以找到进程正在运行的可执行文件:

$ sudo ls -l /proc/1478/exe
lrwxrwxrwx. 1 root root 0 Jun  5 16:19 /proc/1478/exe -> /usr/lib/systemd/systemd

关于c - 使用 ps aux,进程 11558 和 16290 的路径位于括号中 : "(dd)" and "(security_authra)". 这些是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44337984/

相关文章:

linux - 无法理解linux内核中max函数的实现

shell - 如何使用 Go 程序中的点脚本运行 graphviz 进程?

c - 如何计算C中的进程CPU使用率?

java - 一个进程一次可以使用或绑定(bind)多少个端口?

c# - 有人可以解释这个 Windows 操作系统版本编号示例吗?

c - 日志记录与 logrotate 兼容

c - 并行运行的程序,用 C 读/写

c - 线程入口和线程启动之间的确切区别是什么?

go - 使用 Golang 启动正在运行的程序的另一个实例的好方法是什么?

c++ - execvp( command.argv[0], command.argv) 后程序停止