linux除了popen外,获取其它进程PID的方法有哪些

linux除了popen外,获取其它进程PID的方法有哪些,第1张

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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9677065.html

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

发表评论

登录后才能评论

评论列表(0条)

保存