如何获取linux下的进程pid列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取linux下的进程pid列表相关的知识,希望对你有一定的参考价值。

用管道:
通过fgets(buf, n, ptr)buf就可以得到命令“ps -ef"一样的信息,
读帮助”man popen":

char *cmd = "ps -ef";

FILE *ptr;

if ((ptr = popen(cmd, "r")) != NULL)

while (fgets(buf, n, ptr) != NULL)

(void) printf("%s ",buf);

UID PID PPID C STIME TTY TIME CMD
root 0 0 0 Sep-30 ? 00:00:01 sched
root 1 0 0 Sep-30 ? 00:00:06 /etc/init -a
root 2 0 0 Sep-30 ? 00:00:00 vhand
root 3 0 0 Sep-30 ? 00:00:27 bdflush
root 4 0 0 Sep-30 ? 00:00:00 kmdaemon
root 5 1 0 Sep-30 ? 00:00:50 htepi_daemon /
root 6 0 0 Sep-30 ? 00:00:00 strd
root 2941 1 0 Oct-08 tty01 00:00:00 /bin/login ccb
root 43 1 0 Oct-08 ? 00:00:02 /etc/syslogd
root 47 1 0 Oct-08 ? 00:00:00 /etc/ifor_pmd
root 48 47 0 Oct-08 ? 00:00:13 /etc/ifor_pmd
root 36 1 0 Oct-08 ? 00:00:00
参考技术A 直接ps -fe就可以看到所有的进程PID信息了

linux c语言中如何通过进程名获取进程PID(awk命令行指令)popenpclose

文章目录

不唯一匹配(包含字符的全都匹配上)(而且进程名最多为15个字符?)(前15个字符?)

ubuntu上

ps -e | grep 'receive' | awk 'print $1'

arm摄像头上

ps -e | grep 'ky_ai_camera_en' | awk 'print $1'


等等再弄

方法1:嵌到程序里,通过命令行附带要查找的进程名称(交叉编译在arm摄像头里运行)

#include <stdio.h>
#include <string.h>

int main(int argc, const char *argv[])

	if(argc != 2) 
		printf("argc error![%s]\\n", argv[0]);
		return -1;
	
	//char* process = argv[1];
	char cmd[1024];
	sprintf(cmd, "ps -e | grep \\'%s\\' | awk \\'print $1\\'", argv[1]);	//拼接字符串


	FILE* fp = popen(cmd, "r");	//打开管道,执行shell命令
	//FILE* fp = popen("ps -e | grep \\'ky_ai_camera_en\\' | awk \\print $1'", "r");


	char buffer[10] = 0;

	while(NULL != fgets(buffer, 10, fp))	//逐行读取执行结果并打印

		printf("PID: %s\\n", buffer);

	

	pclose(fp);	//关闭返回的文件指针,注意不是fclose,而是pclose

	return 0;


运行效果:

参考文章:Linux下C语言开发(已知进程名得到其PID号)

方法2:通过搜素/proc文件夹下的内容获取进程pid(这个感觉难度比较大)

参考文章:C语言循环遍历文件夹查找文件内容(搜素/proc文件夹下的内容获取进程pid)

以上是关于如何获取linux下的进程pid列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在脚本中获取进程ID

linux应用中,在一个进程内如何获取本进程内其它线程的堆栈信息、

linux应用中,在一个进程内如何获取本进程内其它线程的堆栈信息、

linux shell编程 根据端口获取进程pid 直接用命令netstat -anp grep 端口号 在shell中如何获取PID?

如何在给定进程名称的情况下获取 pid

Win7 下DELPHI如何通过进程名获取路径