如何跟踪在linux中为进程创建的线程?

时间:2013-11-18 17:51:41

标签: linux

我是linux的新手。

我希望像任何命令或程序一样跟踪进程创建的线程,以了解为特定进程运行的当前线程。

我找到了这个链接 Tracking threads memory and CPU consumption但未找到我的解决方案。

我不是在询问任何工具,库在何处以及如何实现,但实际上是一些编程观点。这意味着我想知道哪些API可用于检查给定进程的线程数,内存和CPU消耗。

2 个答案:

答案 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|(管道)。