gpt4 book ai didi

linux - 为什么我看到的线程数比我在 `ps` 列表中创建的线程数多一个?

转载 作者:IT王子 更新时间:2023-10-29 01:24:39 26 4
gpt4 key购买 nike

当我从主进程创建线程 (pthread_create()) 时,我在 ps 列表中看到三 (3) 个线程,这是为什么?也就是说,我看到了主线程的进程,一个是创建线程的,第三个是其他的。 还有什么?一切正常,我只是想知道额外列出的过程是什么。

~/ cat test.c
#include <errno.h>
#include <pthread.h>
static pthread_t thread;
void * test_thread(void * ptr)
{
sleep(30);
return(ptr);
}
void thread_init(void)
{
if (pthread_create( &thread , NULL, test_thread, NULL))
perror("Thread not created!");
}
int main(int argc, char ** argv)
{
thread_init();
sleep(30);
}

当我在运行 Linux 2.6.14 和 BusyBox(但使用 bash 2.04g)的系统上执行此代码时,在重新启动并启动上面的测试程序后得到的 ps 列表:

...
52 root SW [kswapd0]
667 root SW [mtdblockd]
710 root SWN [jffs2_gcd_mtd4]
759 root 980 S /bin/sh
760 root 500 S /bin/inetd
761 root 516 S /bin/boa
762 root 644 S /sbin/syslogd -n
763 root 640 S /sbin/klogd -n
766 root 1516 S /bin/sshd -i
767 root 1036 S -sh
768 root 420 S ./test
769 root 420 S ./test
770 root 420 S ./test
771 root 652 R ps

内核是一个 2.6.14 内核,添加了一些驱动模块。

最佳答案

这可能是“线程管理器”线程。请参阅此处的答案 D.5 link .

如果大多数现代 Linux 系统使用 NPTL,您将看不到这些额外的进程。但我搜索了一下,听起来 BusyBox 使用了 ulibc,我认为它最近才添加了 NPTL 支持。所以我不确定,但我猜你正在使用 LinuxThreads 并将管理器线程视为额外线程。

关于linux - 为什么我看到的线程数比我在 `ps` 列表中创建的线程数多一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com