列出线程c ++ [关闭]

Posted

技术标签:

【中文标题】列出线程c ++ [关闭]【英文标题】:Listing Threads c++ [closed] 【发布时间】:2014-01-05 03:09:30 【问题描述】:

这段代码列出了所有进程和进程的所有线程,但我希望它只列出 pid 进程的线程...例如:explorer.exe pid = 5454 通过 pid 希望他拥有的 id线程和线程状态。

【问题讨论】:

Listing Threads 的可能重复项 【参考方案1】:

如何将进程 ID 作为命令行参数传递给程序并过滤掉所需的内容。

            while( pi )
            
                SYSTEM_PROCESS_INFORMATION* next = PROCESS_INFORMATION_NEXT( pi );
                UINT32 count, n;


                if (argc > 1 && pi->UniqueProcessId == (HANDLE)atoi(argv[1])) 
                    printf("**************************************\n");
                    if( pi->ImageName.Buffer )
                        wprintf(L"%u %s <------ PROCESSO\r\n", pi->UniqueProcessId, pi->ImageName.Buffer);
                    else
                        wprintf(L"%u %s *\r\n", pi->UniqueProcessId, L"System Idle Process");

                    if( next )
                        count = ThreadCount( pi, (ULONG_PTR)next );
                    else
                        count = ThreadCount( pi, (ULONG_PTR)spi + size );

                    for( n=0; n<count; n++ )
                    
                        SYSTEM_THREAD_INFORMATION* th = pi->Threads + n;
                        wprintf(L"   [%u] StartAddress=%p ID Processo=%u IdThred=%u  State=%u  \r\n",
                                n+1, th->StartAddress, th->ClientId.UniqueProcess, th->ClientId.UniqueThread,th->WaitReason);
                    
                
                pi = next;
            

【讨论】:

if (argc > 1 && pi->UniqueProcessId == (HANDLE)atoi(argv[1])) 解释?【参考方案2】:

你可以在 msdn 上看到this 我想这就是你要找的。

【讨论】:

最好在你的答案中总结所需的步骤,而不是仅仅发布一个链接。这样,如果链接将来更改或消失,答案仍然有用。

以上是关于列出线程c ++ [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

AfxBeginThread开启一个线程,怎样去关闭这个线程

C ++线程池[关闭]

监视同步线程的C中的源代码[关闭]

为啥c ++中线程构造函数和绑定的函数签名相同[关闭]

在 c\c++ 中的线程和并发中推荐一本好的编程书籍 [关闭]

Glut,不同线程C ++中的不同上下文[关闭]