linux c语言中如何通过进程名获取进程PID(awk命令行指令)popenpclose
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 c语言中如何通过进程名获取进程PID(awk命令行指令)popenpclose的主要内容,如果未能解决你的问题,请参考以下文章