栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 
#include 

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: %sn", buffer);

	}

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

	return 0;

}

运行效果:

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717937.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号