我试图用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