我想知道如何区分内核线程和用户线程,以便我正在构建一个进程扫描器.我很难找到两种类型的好定义.
我发现内核线程没有自己的内存,因此/ proc/$ pid/status中没有Vm*值,并且/ proc/$ pid/exe上的stat没有返回任何内容.
所以,我想如果进程没有Vm*值且没有inode号,我可以识别内核线程.我想错了......我的脚本看到php-cgi进程有时会被识别为内核进程.
如果发现大多数错误识别的进程都是僵尸,那么后来就会消失.所以我实施了一个简单的检查,看看状态是否为"Z".如果是这样,请忽略它.这为我节省了很多误报,但我仍然收到有关php-cgi内核进程的消息.
谁能告诉我如何以正确的方式区分内核线程和用户线程?