c++ signal實(shí)現(xiàn)發(fā)送信號(hào)
1. 首先了解獲取指定進(jìn)程名的PID:
bash中獲?。?ps -aux | grep xxx | grep -v grep | awk '{print $2}' // xxx 表示進(jìn)程名

這里需要注意,使用ps -ef 或者ps aux , 存在grep 的輸出,因?yàn)間rep 命令也會(huì)啟動(dòng)bash,因此輸出時(shí),會(huì)看到grep 的進(jìn)程,因?yàn)樾枰俅瓮ㄟ^(guò) grep -v 去除grep 的輸出
2. c++ 中實(shí)現(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;
}
// 通過(guò)kill 函數(shù)發(fā)送信號(hào)
kill(std::stoi(strPid), 38);
return;
}
int main()
{
while (1) {
SendSig();
sleep(5);
}
return 0;
}到此這篇關(guān)于c++ signal實(shí)現(xiàn)發(fā)送信號(hào)的文章就介紹到這了,更多相關(guān)c++ signal發(fā)送信號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++一個(gè)數(shù)組賦值給另一個(gè)數(shù)組方式
文章介紹了三種在C++中將一個(gè)數(shù)組賦值給另一個(gè)數(shù)組的方法:使用循環(huán)逐個(gè)元素賦值、使用標(biāo)準(zhǔn)庫(kù)函數(shù)std::copy或std::memcpy以及使用標(biāo)準(zhǔn)庫(kù)容器,每種方法都有其適用的場(chǎng)景和注意事項(xiàng)2025-02-02
c語(yǔ)言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡
這篇文章主要介紹了c語(yǔ)言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡,需要的朋友可以參考下2023-03-03
C++詳細(xì)講解繼承與虛繼承實(shí)現(xiàn)
這篇文章主要介紹了Java中的繼承詳情,繼承是面向?qū)ο笕筇卣髦?,可以使得子?lèi)具有父類(lèi)的屬性和方法,還可以在子類(lèi)中重新定義,以及追加屬性和方法,下文介紹需要的朋友可以參考下2022-04-04
VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ)
本文主要介紹了VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ),實(shí)現(xiàn)了視頻,拍照,保存這三個(gè)功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
C語(yǔ)言左旋轉(zhuǎn)字符串與翻轉(zhuǎn)字符串中單詞順序的方法
這篇文章主要介紹了C語(yǔ)言左旋轉(zhuǎn)字符串與翻轉(zhuǎn)字符串中單詞順序的方法,給出了相關(guān)的兩道算法題目作為例子,需要的朋友可以參考下2016-02-02

