用命令的方式也是很方便将结果存到变量里呀,用一个复制或者重定向就行了。
c代码:
#include <pthreadh>
#include <stdioh>
void print_xs (void unused)
{
while (1)
fputc (‘x’, stderr);
return NULL;
}
/ The main program /
int main ()
{
int i=0;
while(1){
pthread_t thread_id;
if( NULL != pthread_create (&thread_id, NULL, &print_xs, NULL)){
break;
}
i++;
}
printf("创建线程个数:%d\n",i);
return 0;
}
要想获取进程的用户名和账号,应首先调用OpenProcessToken打开进程的令牌(Token),打开方式设为TOKEN_QUERY,然后将TOKEN_INFORMATION_CLASS设为 TokenUser调用GetTokenInformation枚举进程的令牌信息块SID,通常称为安全标识(Security Identifier),最后调用LookupAccountSid从SID中检索用户名和账号。
char buf[256], szUser[128], szComputer[128];
HANDLE hProcess, hToken;
DWORD cbUser, cbComputer;
SID_NAME_USE snu;
if(ProcessID <= 0x0c)
显示用户名为"SYSTEM";
Else
显示用户名为"SERVICE ";
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, ProcessID);
OpenProcessToken(hProcess, TOKEN_QUERY, &hToken);
GetTokenInformation(hToken, TokenUser, &buf, 256, &cbUser);
cbComputer=sizeof(szComputer);
LookupAccountSid(NULL, (DWORD )((DWORD )buf), szUser,
&cbUser, szComputer, &cbComputer, &snu);
CloseHandle(hToken);
CloseHandle(hProcess);
示例里,已经把所有进程相关信息保存在ll_processes[]数组里
进程名字列表在lb_1里
知道进程名字,调用
ll_hprocess = OpenProcess(PROCESS_ALL_ACCESS, 0, ll_processes[ll_index])
可以得到你进程的句柄
然后:
OpenProcessToken(ll_hprocess , TOKEN_QUERY, &hToken);
GetTokenInformation(hToken, TokenUser, &buf, 256, &cbUser);
cbComputer=sizeof(szComputer);
LookupAccountSid(NULL, (DWORD )((DWORD )buf), szUser, &cbUser, szComputer, &cbComputer, &snu);
则 用户名和账号分别到存放变量szUser和szComputer中。
OpenProcessToken GetTokenInformation LookupAccountSid 我只找到了函数原型,没有找到如何在PB中声明。
-----------------
BOOL OpenProcessToken( __in HANDLE ProcessHandle, //要修改访问权限的进程句柄 __in DWORD DesiredAccess, //指定你要进行的 *** 作类型 __out PHANDLE TokenHandle //返回的访问令牌指针 );
BOOL WINAPI GetTokenInformation(
__in HANDLE TokenHandle,
__in TOKEN_INFORMATION_CLASS TokenInformationClass,
__out_opt LPVOID TokenInformation,
__in DWORD TokenInformationLength,
__out PDWORD ReturnLength
);
别名:LookupAccountSidA
库名:advapi32dll
说明:
返回值:
实例:
参数表:
声明:Declare Function LookupAccountSid Lib "advapi32dll" Alias "LookupAccountSidW" (ByVal lpSystemName As Any, Sid As Any, Name As Any, cbName As Long, ReferencedDomainName As Any, cbReferencedDomainName As Long, peUse As Integer) As Long
以上就是关于Linux下 c/c++ 如何获取当前的进程信息全部的内容,包括:Linux下 c/c++ 如何获取当前的进程信息、VB 如何 获取 指定用户名下的 所有进程、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)