linux c语言中如何通过进程名获取进程PID(awk命令行指令)popen、pclose
生活随笔
收集整理的這篇文章主要介紹了
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)
總結
以上是生活随笔為你收集整理的linux c语言中如何通过进程名获取进程PID(awk命令行指令)popen、pclose的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言循环遍历文件夹查找文件内容(搜素/
- 下一篇: VS里的VC++属性和C/C++属性有什