具有相同名称的多个进程

nit*_*ian 3 linux process ps

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

ps -eaf | grep myapplication
Run Code Online (Sandbox Code Playgroud)

...输出显示'myapplication'的多个条目.

如果我在WindRiver Linux 3.0中提供相同的命令,输出只显示'myapplication'的一个条目

差异与操作系统的差异有关吗?请告诉我原因?

Mar*_*rkR 6

它可能与使用中的线程库和/或内核版本有关.

旧的(现在非常古老的)"Linuxthreads"线程库,用于将每个线程显示为"顶级"进程,它直接出现在/ proc下并具有不同的PID.这是它的许多缺点之一,由以下因素修复:

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

两个库都实现了posix线程API(或多或少;新版本比旧版本更多).我希望有问题的流程是多线程的.

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