Linux实际上并不区分进程和线程,而是将进程和线程作为数据结构task_struct来实现。
那么,Linux为某些程序提供了什么,让它们能够从子进程中分辨进程的线程?例如,有没有一种方法可以查看Linux中进程所拥有的所有线程的详细信息?
谢谢。
发布于 2018-03-28 14:04:10
top命令: top -H -b -n 1 -H参数指示top显示每个单独的线程。通常,top汇总其父进程下的所有线程。-b参数使顶部以批处理模式运行-信息被收集、显示,然后转储到stdout,而不是在交互模式下运行和刷新显示的数据。-b选项,用户必须告诉顶部要运行多少次,这是用-n参数完成的,最后一个参数是要运行多少次。因此,top -H -b -n 1指示系统“运行顶部,显示单个线程,以批处理模式运行,并且只运行一次”。
ps命令报告当前正在运行的进程的快照。ps -eLf -eLf参数(也可以用作-e -L -f )分解如下:e告诉ps显示所有进程,而不管它们的所有者是谁或它们的当前状态--活动、休眠、暂停、等待I/O等等。L告诉ps显示单个线程f告诉ps将输出格式化为完整格式的列表,并结合L参数将NLWP (线程数)和LWP (线程ID)列添加到输出中。发布于 2018-03-28 16:58:12
考虑一个带有PID p1的进程
子进程的task_struct对象将PPID (父PID)设置为p1,并且它的PID和TGID设置为(比方说) p2。
task_struct对象的p1线程的PID设置为,例如p3,但TGID设置为p1。
https://unix.stackexchange.com/questions/434092
复制相似问题