文章目录
(一)查看进程/线程的命令ps -eLf
L:显示线程id
(二)跟踪进程/线程系统调用情况
(1)正在运行的程序:strace -p 进程/线程号
(2)未运行的程序strace 可执行文件名
(三)跟踪库函数调用ltrace
(1)正在运行的程序ltrace - p 进程号/线程号
(2)未运行的程序ltrace 可执行文件名
(四)Linux系统一个进程最多可以创建多少个线程
取决因素:
- Linux32位系统 or 64位系统
- 线程栈大小
- 最大线程数限制
使用ulimit -s 线程栈大小(字节)修改线程栈的大小
注意:创建的最大线程数肯定是max user process的值,一般情况小于这个值
在一定条件下,创建线程的个数和线程栈的大小成反比,在超过某个值后,线程数的最大值由max user process决定
(五)代码测试最大的线程数
代码:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
void* fun(void* arg)
{
while(1)
{
sleep(1);
}
}
int main()
{
pthread_t id;
int ret = -1;
for(int i = 1; i < 5000; i++)
{
ret = pthread_create(&id, NULL, fun, NULL);
if(ret != 0)
{
break;
}
printf("i = %d\n", i);
}
sleep(3);
exit(0);
}
结果: