首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux如何区分线程和子进程?

Linux如何区分线程和子进程?
EN

Unix & Linux用户
提问于 2018-03-28 13:36:21
回答 2查看 9.7K关注 0票数 27

Linux实际上并不区分进程和线程,而是将进程和线程作为数据结构task_struct来实现。

那么,Linux为某些程序提供了什么,让它们能够从子进程中分辨进程的线程?例如,有没有一种方法可以查看Linux中进程所拥有的所有线程的详细信息?

谢谢。

EN

回答 2

Unix & Linux用户

发布于 2018-03-28 14:04:10

  1. 它使用一些额外的选项运行top命令: top -H -b -n 1
    • -H参数指示top显示每个单独的线程。通常,top汇总其父进程下的所有线程。
    • -b参数使顶部以批处理模式运行-信息被收集、显示,然后转储到stdout,而不是在交互模式下运行和刷新显示的数据。
    • 使用-b选项,用户必须告诉顶部要运行多少次,这是用-n参数完成的,最后一个参数是要运行多少次。

因此,top -H -b -n 1指示系统“运行顶部,显示单个线程,以批处理模式运行,并且只运行一次”。

  1. ps命令报告当前正在运行的进程的快照。ps -eLf -eLf参数(也可以用作-e -L -f )分解如下:
    • e告诉ps显示所有进程,而不管它们的所有者是谁或它们的当前状态--活动、休眠、暂停、等待I/O等等。
    • L告诉ps显示单个线程
    • f告诉ps将输出格式化为完整格式的列表,并结合L参数将NLWP (线程数)和LWP (线程ID)列添加到输出中。
票数 6
EN

Unix & Linux用户

发布于 2018-03-28 16:58:12

考虑一个带有PID p1的进程

子进程的task_struct对象将PPID (父PID)设置为p1,并且它的PID和TGID设置为(比方说) p2。

task_struct对象的p1线程的PID设置为,例如p3,但TGID设置为p1。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/434092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档