可能重复:
Why do I see one more thread than the number I created in myps
listing?
当我从主进程创建一个线程(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
它们是:三个连续编号的PID过程。它似乎没有造成任何伤害,但我好
。答案 0 :(得分:0)
可能是ps为进程显示1行,为两个线程显示2行。您没有显示ps的发布方式,版本,也不包含ps命令的全部内容。
ps通常只显示进程,而不是线程。