GetThreadId 根据线程句柄得到线程ID。
GetWindowThreadProcessId ,根据窗口句柄得到此窗口所在线程的ID(也同时得到进程的ID)
OpenThread,能根据ID得到线程的句柄。
linux C中,获取当前进程id 函数为getpid() ;
头文件:#include <unistdh>函数原型:pid_t getpid(void);
函数说明:getpid ()用来取得目前进程的进程id,许多程序利用取到的此值来建立临时文件, 以避免临时文件相同带来的问题。
返回值:目前进程的进程id
范例
#include <stdioh>
#include <unistdh>
main()
{
printf("pid=%d\n", getpid());
}
执行:
pid=1494 /每次执行结果都不一定相同 /
package test;
import javaioBufferedReader;
import javaioFile;
import javaioFileWriter;
import javaioIOException;
import javaioInputStream;
import javaioInputStreamReader;
import javaioPrintWriter;
public class GetPid {
private static final String PNAME = "QQ";
public static void main(String[] args)
throws IOException {
Systemoutprintln("包含关键字 "+PNAME+" 的进程有:");
Systemoutprintln();
String path = SystemgetProperty("userdir");
final File createFileName = new File(path + "\\mytempscriptvbe");
if(createFileNameexists()createFileNamedelete():createFileNamecreateNewFile()){}
final PrintWriter pw = new PrintWriter(new FileWriter(createFileName,
true), true);
pwprintln("for each ps in getobject(\"winmgmts:\\\\\\root\\cimv2:win32_process\")instances_");
pwprintln("wscriptecho pshandle&vbtab&psname");
pwprintln("next");
pwclose();
final InputStream ii = RuntimegetRuntime()exec(
"cscript " + path + "\\mytempscriptvbe")getInputStream();
final InputStreamReader ir = new InputStreamReader(ii);
final BufferedReader br = new BufferedReader(ir);
String str = null;
String[] ss = null;
while ((str = brreadLine()) != null) {
if (strindexOf(PNAME)>0&&strendsWith("exe")) {
ss = strsplit("\\s");
for(int i=0;i<sslength;i+=2){
Systemoutprintln("");
Systemoutprintln("进程名:"+ss[i+1]+"\n进程ID:"+ss[i]);
}
}
}
Systemoutprintln("");
irclose();
iiclose();
brclose();
}
}
运行结果如下
包含关键字 QQ 的进程有:
进程名:QQexe
进程ID:3956
通过linux命令来获取进程ID范例代码:
Process psProcess = RuntimegetRuntime()exec("sh");DataOutputStream out = new DataOutputStream( psProcessgetOutputStream() );
InputStream is = psProcessgetInputStream();
outwriteBytes( "ps | grep '***loader' | cut -c 10-14\n" );
outwriteBytes( "ps\n" );
outflush();
try {
psProcesswaitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
eprintStackTrace();}
if(isread() != 0)
{
byte firstByte = (byte)isread();
int available = isavailable();
byte[] characters = new byte[available + 1];
characters[0] = firstByte;
isread( characters, 1, available );
String re = new String( characters );
}
没事做,写个详细代码给你吧
#include<windowsh>
#include<tlhelp32h>//声明快照函数的头文件
int main(int argc,char argv[])
{
PROCESSENTRY32 pe32;
//在使用这个结构之前,先设置它的大小
pe32dwSize=sizeof(pe32);
//给系统内的所有进程拍一个快照
HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//遍历进程快照,轮流显示每个进程的信息
BOOL bMore=::Process32First(hProcessSnap,&pe32);
while(bMore)
{
if(strcmp("abcexe",pe32szExeFile)==0)//如果找到进程名为abcexe
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32th32ProcessID);//获取句柄
/这里已经打开那个进程的句柄了/ }
bMore=::Process32Next(hProcessSnap,&pe32);//寻找下一个
}
return 0;
}
当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。
在某些情况下,你也许想要知道运行中的子shell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。
在bash中,子shell进程的PID存储在一个特殊的变量‘$$'中。这个变量只读,你不可以在脚本中修改它。比如:
复制代码代码如下:
#!/bin/bash
echo "PID of this script: $$"
上面的脚本会得到下面的输出:
复制代码代码如下:
PID of this script: 6583
除了$$, bash shell还会导出其他的只读变量。比如,PPID存储子shell父进程的ID(也就是主shell)。UID存储了执行这个脚本的当前用户ID。比如:
复制代码代码如下:
#!/bin/bash
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $UID"
输出是:
复制代码代码如下:
PID of this script: 6686
PPID of this script: 4656
UID of this script: 1000
上面输出中,PID每次执行都会变化。这个因为每次运行都会创建一个新的shell。另一方面,PPID每次都会一样只要你在同一个shell中运行。
对于所有bash内置变量列表,参考man页。
复制代码代码如下:
$ man bash
用法:开个cmdexe窗口,输入:ntsd -c q -p PID
把最后那个PID,改成你要终止的进程的ID。如果你不知道进程的ID,任务管理器->进程选项卡->查看->选择列->勾上"PID(进程标识符)",然后就能看见了。
答2:xp下还有两个好东东tasklist和tskill。tasklist能列出所有的进程,和相应的信息。tskill能查杀进程,语法很简单:tskill 程序名!!
比如杀死进程 QQ
taskkill /f /fi "IMAGENAME eq QQexe"
1、用taskill命令
①taskkill /im
进程名称
示例:用taskkill /im
VStartexe命令关闭音速启动,VStartexe就是音速启动的进程名称,下面看 *** 作,执行了三次,成功关闭了音速启动,再看下面的方法
②taskkill /pid[进程码]
-t(结束该进程)
-f(强制结束该进程以及所有子进程)
注:有两种方法查进程的PID码:
①在命令行下用 tasklist 命令查出进程的PID号码,就是这些
原型:
int WINAPI icePub_getProcessInfo(char strInfoList ,int maxLen)
输入:maxLen strInfoList最大长度
输出:strInfoList 进程基本信息,name|pid|path,一行一条信息
int recordCounts;
char buff[102430+1];
typedef int (WINAPI ICEPUB_GETPROCESSINFO)(char strInfoList ,int maxLen);
ICEPUB_GETPROCESSINFO icePub_getProcessInfo = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDlldll");
if(hDLLDrv)
{
icePub_getProcessInfo = (ICEPUB_GETPROCESSINFO )GetProcAddress(hDLLDrv, "icePub_getProcessInfo");
}
if(icePub_getProcessInfo)
recordCounts=icePub_getProcessInfo(buff,102430);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
AfxMessageBox(buff);
以上就是关于如何获取一个进程中所有线程ID全部的内容,包括:如何获取一个进程中所有线程ID、linux 获取进程id 函数、java 获取指定的进程id等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)