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)樾枰俅瓮ㄟ^ 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; } // 通過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-02c語(yǔ)言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡
這篇文章主要介紹了c語(yǔ)言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡,需要的朋友可以參考下2023-03-03C++詳細(xì)講解繼承與虛繼承實(shí)現(xiàn)
這篇文章主要介紹了Java中的繼承詳情,繼承是面向?qū)ο笕筇卣髦唬梢允沟米宇惥哂懈割惖膶傩院头椒?,還可以在子類中重新定義,以及追加屬性和方法,下文介紹需要的朋友可以參考下2022-04-04VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ)
本文主要介紹了VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ),實(shí)現(xiàn)了視頻,拍照,保存這三個(gè)功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05C語(yǔ)言左旋轉(zhuǎn)字符串與翻轉(zhuǎn)字符串中單詞順序的方法
這篇文章主要介紹了C語(yǔ)言左旋轉(zhuǎn)字符串與翻轉(zhuǎn)字符串中單詞順序的方法,給出了相關(guān)的兩道算法題目作為例子,需要的朋友可以參考下2016-02-02