我是linux的新手。
我希望像任何命令或程序一样跟踪进程创建的线程,以了解为特定进程运行的当前线程。
我找到了这个链接 Tracking threads memory and CPU consumption但未找到我的解决方案。
我不是在询问任何工具,库在何处以及如何实现,但实际上是一些编程观点。这意味着我想知道哪些API可用于检查给定进程的线程数,内存和CPU消耗。
答案 0 :(得分:2)
如果您知道process-id,则在终端上运行命令
"ps -e -T | grep<pid-no>" It will show all the threads for the process(pid-n0)
或者您可以编写示例程序
pthread_t ntid;
void printids(const char *s)
{
pid_t pid;
pthread_t tid;
pid=getpid();
tid=pthread_self();
printf("%s pid %u tid %u(0x%x)\n",s,(unsigned int)pid, (unsigned int)tid, (unsigned
int)tid);
}
void *thr_fn(void *arg)
{
printids("new thread");
return ((void *)0);
}
int main(int argc, char *argv[])
{
int err;
err=pthread_create(&ntid,NULL,thr_fn,NULL);
if(err!=0)
cout<<"can't create thread "<<strerror(err);
printids("main thread");
sleep(1);
exit(0);
}
答案 1 :(得分:0)
Linux / Unix中的top
命令显示活动进程的信息:运行的命令,内存使用情况,CPU使用情况,线程使用情况,状态和I / O使用情况。您可以使用shell脚本解析此信息。查看grep
和|
(管道)。