具有相同名称的多个进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有相同名称的多个进程相关的知识,希望对你有一定的参考价值。

我有一个在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中的“task”子目录下,因此通常会被“ps”忽略(如果需要,您仍然可以使用适当的选项查看它们)。

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

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

另一答案

也许grep myapplication也被列出,这就是为什么有多个条目。如果没有,它取决于你的应用程序正在做什么,也许自己调用等等。你需要提供更多的信息,或至少ps -eaf | grep myapplication输出。

另一答案

在Linux中,线程的实现与完整过程没有太大区别,请参阅man clone。我怀疑你只是使用两个不同的ps命令与不同的默认设置。 ps --help将向您展示如何列出每个进程的每个线程。

另一答案

您可以使用“ps -efm”列出与它们关联的进程和线程。某些系统显示与可执行文件同名的线程。你会看到内核线程显示为“[]”。

以上是关于具有相同名称的多个进程的主要内容,如果未能解决你的问题,请参考以下文章

如何区分具有相同名称的多个进程并杀死所有在 C# 中以我的 USERNAME 运行的进程?

具有相同布局的多个片段

在 TabLayout 和 ViewPager2 中执行异步任务后更新具有相同布局的多个片段

将 OnLongClickListener 应用于具有相同名称的多个图像

如何将具有相同ID和名称的多个输入类型号相乘

使用具有不同片段字段的相同中继根查询的多个 react-router-relay 路由