我試圖用C++編寫一個程序,它發送信號給另一個程序,就像你在Linux中使用kill
命令一樣,但似乎我遇到了一些轉換問題。正如我所看到的,我不能僅僅通過終端將信號作爲字符串(SIGINT
,SIGUSR1
等)傳遞並在程序中輕鬆轉換它們。我也不能通過將他們作爲他們的記者int
(2,30等)並直接使用系統調用來實現我的目標。這裏是我的代碼:信號發送器轉換
的信號通過int型
#include <iostream>
#include <csignal>
#include <unistd.h>
#include <cstdlib>
using namespace std;
int main (int argc, char* argv[]) {
int pid = atoi(argv[1]);
int signal = atoi(argv[2]); //passing signals directly as int
cout << signal << endl;
int error = kill(pid, signal);
if(error !=0)
cout << "Error sending signal to catcher program."<< endl;
return 0;
}
輸出
~$./signal_sender 5977 2
2
Error sending signal to catcher program.
至於當我試圖使用字符串,我無法找到工作正常轉換。
在此先感謝。
什麼是'errno'你得到'殺()'? – NPE
'ESRCH 3/*沒有這樣的過程* /'所以我想我是發送信號到錯誤的PID。通過糾正它,我通過整數工作,但傳遞字符串時仍然沒有運氣。 –
請參閱下面的完整答案。 – NPE