getpid(取得进程识别码)
相关函数 fork,kill,getpid
表头文件 #include<unistdh>
定义函数 pid_t getpid(void);
函数说明 getpid()用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。
返回值 目前进程的进程识别码
范例 #include<unistdh>
main()
{
printf(“pid=%d\n”,getpid());
}
执行 pid=1494 /每次执行结果都不一定相同/
ctrl+alt+delete打开任务管理器—查看-选择列-把PID勾上。
ctrl+alt+delete打开任务管理器—查看-选择列-把PID勾上,这样就可以显示进程的PID号了,可以通过PID找到相应的进程。
PID是进程运行时系统随机为进程分配的,并不代表专门的进程。
如果我给NeMaC的参数不同,用上述指令会列出所有NeMaC命令执行的信息
但是我只想获取其中ture command为
还是得到了两个PID值,因为我同时使用了两个NeMaC命令(在不同命令窗口输入)
一条是NeMaC -c 30 -m 25000 -r rulessample 20210101 private rule1
一条是NeMaC -c 120 -m 25000 -r cs2rules 20210101 private rule2
谢谢,另外,NeMaC是NeTraMet这个分析流的工具的一个组件。学习中分成两个脚本执行。请教中,如何用两脚本,要是对应NeMaC有N个进程呢?那又该如何是好换一个思路吧,我如何能得到一个进程的唯一子进程的pid?:用
ps -C NeMaC -f | grep rule1 | awk '{print $2}'
我已经能拿到想要kill的进程的pid了,其值例如为:12815
但是当我执行如下shell文件时确出错了
#!/bin/bash#PATH=“$PATH”:/home/gwei/myCode#myNeMaC=——ps -C NeMaC -f | grep myNeMaC1 | awk '{print $2}'——
kill -9 $myNeMaC它显示出来的错误信息是
: arguments must be process or job IDskill: 12815
kill -9 $myNeMaC
也可以杀掉进程,但是把上面这些写入一个。sh文件再执行就出错了怎麼办呢?移植到RH9後提示的错误信息是:
[root@gxnunc0504 myCode]# /bin/bash /killNeMaC1sh
: no such pidsh: line 6: kill: 21820
kill -9 $myNeMaC
上面就是我杀掉进程的教本killNeMaC1,其中echo $myNeMaC确认只剩下一个PID了,可是为什麼到了kill -9 $myNeMaC就运行不下去了呢。相关 *** 作和结果如下:
按快捷键“win+R”,输入cmd后按回车进入DOS环境:
输入tasklist回车
taskkill可以根据进程名直接杀掉的 例如杀掉记事本进程 taskkill /f /im notepadexe
>
BAT脚本获取当前cmdexe进程PID/PPID/信息(自杀脚本)
方法一:
使用subprocess 的check_output函数执行pidof命令
方法二:
使用pgrep命令,pgrep获取的结果与pidof获得的结果稍有不同pgrep的进程id稍多几个pgrep命令可以使适用subprocess的check_out函数执行
方法三:
获取当前脚本的pid进程
方法四:命令获取+kill PID
说明:
注意:linux的进程号最大是是 32768 (32 位系统)和 2 的 22 次方(400w 左右)(64 位系统)。cut -c 9-15不够,改成awk '{print $2}'
通过查看资料,发现一种比较简单的方法就是在代码中使用printf将当前线程的id打印出来。
而这也分成两种情况:
1 如果是pthread,则使用,
#include <pthreadh>
pthread_t pthread_self(void);
2 如果不是pthread,即是由内核创建的线程,则使用,
#include <sys/typesh>
pid_t gettid(void);
获取线程所在的进程的id,方法如下:
#include <sys/typesh>
#include <unistdh>
pid_t getpid(void);
pid_t getppid(void);
所以,我们在代码中使用如下的语句打印:
printf("\ntid=%lu, pid=%lu\n", gettid(), getpid());
这样就能获取当前代码所在的线程和进程了。
根据打印出来的进程的pid,获取进程名的方法是:
ls -lh /proc/pid/exe
lrwxrwxrwx 1 root root 0 Jan 1 20:48 /proc/pid/exe ->
sh-32#
查看thread id的方法有:
1 sh-32# ps -efL | grep process,
ps命令指定-L命令选项可以用来查看进程下所包含的所有线程。
2 sh-32# ls -l /proc/pid/task/
查看进程下当前有哪些task,这些task指的就是线程。
以上就是关于linux除了popen外,获取其它进程PID的方法有哪些全部的内容,包括:linux除了popen外,获取其它进程PID的方法有哪些、苏宁pid怎么获取、node 怎么根据进程名获取pid mac等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)