300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux c语言中如何通过进程名获取进程PID(awk命令行指令)popen pclose

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

时间:2021-03-05 06:39:59

相关推荐

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

文章目录

不唯一匹配(包含字符的全都匹配上)(而且进程名最多为15个字符?)(前15个字符?)方法1:嵌到程序里,通过命令行附带要查找的进程名称(交叉编译在arm摄像头里运行)方法2:通过搜素/proc文件夹下的内容获取进程pid(这个感觉难度比较大)

不唯一匹配(包含字符的全都匹配上)(而且进程名最多为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,而是pclosereturn 0;}

运行效果:

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。