c++ signal實現(xiàn)發(fā)送信號
更新時間:2024年01月08日 09:40:35 作者:年少輕狂且縱馬
這篇文章主要為大家詳細介紹了c++ signal實現(xiàn)發(fā)送信號的相關知識,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起學習一下
1. 首先了解獲取指定進程名的PID:
bash中獲?。?ps -aux | grep xxx | grep -v grep | awk '{print $2}' // xxx 表示進程名

這里需要注意,使用ps -ef 或者ps aux , 存在grep 的輸出,因為grep 命令也會啟動bash,因此輸出時,會看到grep 的進程,因為需要再次通過 grep -v 去除grep 的輸出
2. c++ 中實現(xiàn)
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
void DoCmdGetPid(const std::string& cmd, std::string& stringPid)
{
FILE *pFile = popen(cmd.c_str(), "r");
char *buff = new char[256];
memset(buff, 0, sizeof(buff));
fread(buff, 1, sizeof(buff), pFile);
stringPid = buff;
pclose(pFile);
delete[] buff;
}
void SendSig()
{
const std::string& procName = "recv";
std::string cmd = "ps -a | grep " + procName + " |grep -v grep | awk '{print $2}'";
std::string strPid;
DoCmdGetPid(cmd, strPid);
if (strPid.empty()) {
std::cout << "not process\n";
return;
}
// 通過kill 函數(shù)發(fā)送信號
kill(std::stoi(strPid), 38);
return;
}
int main()
{
while (1) {
SendSig();
sleep(5);
}
return 0;
}到此這篇關于c++ signal實現(xiàn)發(fā)送信號的文章就介紹到這了,更多相關c++ signal發(fā)送信號內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
VS2017+Qt5+Opencv3.4調用攝像頭拍照并存儲
本文主要介紹了VS2017+Qt5+Opencv3.4調用攝像頭拍照并存儲,實現(xiàn)了視頻,拍照,保存這三個功能。具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05

