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

20220701 popen测试打印当前路径pwd

//arnold add 20220701 打印当前路径测试 start
int print_current_path()
{
	//char cmd[1024] = {0};
	//sprintf(cmd, "pwd");	//拼接字符串	


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


	char buffer[256] = {0};

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

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

	}

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

	return 0;

}

//arnold add 20220701 获取当前路径测试 end

运行结果:

PWD: 
/heop/package/http_proxy_demo/H9
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐