linux - 同名的多个进程

标签 linux process ps

我有一个在 Linux 2.6.13 和 WindRiver Linux 3.0 上运行的应用程序。当我在 Linux 2.6.13 中...

ps -eaf | grep myapplication

...输出显示“myapplication”的多个条目。

如果我在 WindRiver Linux 3.0 中给出相同的命令,输出只会显示一个“myapplication”条目

差异是否与使用的操作系统差异有关?请告诉我这是什么原因?

最佳答案

这可能与使用的线程库和/或内核版本有关。

旧的(现在非常旧的)“Linuxthreads”线程库,用于将每个线程显示为“顶级”进程,它会直接出现在/proc 下并具有不同的 PID。这是它的众多缺点之一,已通过以下方式解决:

新的(现在不是很新)“NPTL”线程库多年来一直包含在每个新发行版中,它可以使用内核功能使线程出现在相同的 PID 下。线程仍然存在,但现在位于/proc 中的“任务”子目录下,因此通常会被“ps”忽略(如果需要,您仍然可以通过适当的选项查看它们)。

这两个库都实现了 posix 线程 API(或多或少;新的比旧的多)。我希望有问题的进程是多线程的。

如果很久很久以前静态链接的程序,仍然可以看到与 Linuxthreads 链接的程序。现代内核支持这一点很好。

关于linux - 同名的多个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4145318/

相关文章:

linux - TCP 的初始重传超时是多少?

c - 为什么fork程序printf执行时间更长

python - 启动单个 python 脚本,因为不同的进程因命令行参数而异

bash - 使用 ps 和 awk 获取 pid,然后杀死它

Linux : Rename files that ends with live. conf 到 dev.conf

linux - 如何在脚本中包含和排除字符串

使用 printf 检查过程控制

linux - 为什么 pgrep 找不到这个进程?

c - Unix - 关于 & 和 ps

python - 项目模块导入 - Python2.7 [初学者]