如何分别列出指定进程的所有线程

如何分别列出指定进程的所有线程,第1张

遍历指定进程的所有线程

#define NO_WIN32_LEAN_AND_MEAN

#include <tlhelp32h>

int GetProcessThreadList(DWORD th32ProcessID) //进程的ID

{

HANDLE hThreadSnap;

THREADENTRY32 th32;

hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, th32ProcessID);

if (hThreadSnap == INVALID_HANDLE_VALUE)

{

return 1;

}

th32dwSize = sizeof(THREADENTRY32);

if (!Thread32First(hThreadSnap, &th32))

{

CloseHandle(hThreadSnap);

return 1;

}

do

{

if (th32th32OwnerProcessID == th32ProcessID)

{

printf("ThreadID: %ld\n", th32th32ThreadID); //显示找到的线程的ID

}

}while(Thread32Next(hThreadSnap, &th32));

CloseHandle(hThreadSnap);

return 0;

}

pthread_getattr_np

(pthread_t

tid,

pthread_attr_t

attr);

即可。

具体你需要先了解一下pthread

相关接口。

比如,

#define

_GNU_SOURCE

/

See

feature_test_macros(7)

/

#include

<pthreadh>

int

main()

{

tid

=

pthread_create(xxxx,xxx);

pthread_getattr_np(tid,

&attr);

/

后面就可以用

pthread_attr_getstack

之类的接口从

attr

中获得这个线程的

stack

信息(比如地址,大小等)/

}

最近刚刚接触到RobotFramework,发现这个工具倒是可以满足我的要求,而且可以结合seleniumLibrary,用来做web的自动化测试相当不错。之前我也接触过selenium,不过感觉那个工具更贴近开发人员使用,有了robotFramework之后,感觉这个工具相当强大,而且是贴近测试人员的。之所以说强大,主要是这些测试脚本都可以用文本格式保存(如txt/html等)

==安装篇==

如果有想学的朋友可以自己下载以下文件安装(Google-code里可以找到大部分的安装文件):

这篇文章的内容比较旧了,最新的安装指南请查看 更新篇

python-271msi(首先要有python,请选择将Python加入Path)

wxPython28-win32-unicode-28110-py27exe(wxPython,必须要的)

robotframework-260win32exe(然后装robot的Framework)

robotframework-ride-0381win32exe(robotFramework的IDE,很不错)

robotframework-seleniumlibrary-28win32exe(seleniumLibrary)

安装成功后

执行[PythonDir]\Scripts\ridepy

看到界面就是安装成功了。

如果需要AutoIt支持就下载下面2个东东。

AutoItLibrary-11

pywin32-216win32-py27exe

==入门篇==

安装完成了,这个框架可以说是基于keyword的 *** 作,按F5可以看到所有加载的keyword。

首先新增一个project

然后新增suite

然后新增test case,接着在suite层级add library,把selenium library加进来,添加后按F5检验是否添加成功,如图

OK,继续在suite的setting里设置suite启动和结束的keyword,即Start Selenium Server和Stop Selenium Server,他会在运行时帮助我们自动启动seleniumserver。

接下来在test case里添加一个步骤,open browser(一般用selenium做web测试都要用这个方法来打开浏览器),添加后关键字变成蓝色表示找到关键字了,否则可能是拼写错误或者没有加载相应的library。红色表示有一个必选参数要给定输入值,具体参数可以看F5里的keyword说明。

输入参数,第二个参数默认是firefox,不过我没装,就用ie吧。

以上只是一个简单的例子,没有详细说明每个步骤的 *** 作,只是初步介绍。后续再详细介绍

THREADENTRY32

CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 进程ID)

Thread32First

Thread32Next

THREADENTRY32里面都没有这些信息,怎么能获取我想要的信息呢,

线程的ID,优先级,状态这些都搞定了,如何取得ETHREAD Ted 入口地址 及模块信息,就是XueTr中的查看进程线程信息窗口中显示的资料

VC

获取进程线程数

#include

void

EnumProcess(void)

{

HANDLE

hProcessSnap;

HANDLE

hProcess;

PROCESSENTRY32

pe32;

DWORD

dwPriorityClass;

hProcessSnap

=

CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,

0);

if

(hProcessSnap

==

INVALID_HANDLE_VALUE)

{

return;

}

pe32dwSize

=

sizeof(PROCESSENTRY32);

if

(!Process32First(hProcessSnap,

&pe32))

{

CloseHandle(hProcessSnap);

return;

}

do

{

//printf("%s",

pe32szExeFile);

//完整文件名

//printf("%d",

(int)pe32cntThreads);//线程数

}while(Process32Next(hProcessSnap,

&pe32));

CloseHandle(hProcessSnap);

}

如果要获取进程句柄

HANDLE

hProcessHandle;

hProcessHandle

=

OpenProcess(0x1F0FFF,

true,

ProcessID);//ProcessID进程ID

这个在控制台,Win32

SDK

,MFC

都可以用的,只不过

SDK

,MFC

输出就

不用

printf

了,只要把获取的内容赋给变量就行了

以上就是关于如何分别列出指定进程的所有线程全部的内容,包括:如何分别列出指定进程的所有线程、linux应用中,在一个进程内如何获取本进程内其它线程的堆栈信息、、如何查看某进程下运行的线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9417169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存