日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2025/3/20 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。