我正在编写一个程序,从命令行读取信号名称(例如 SIGSTOP、SIGKILL 等)作为字符串,并调用 kill() 系统调用来发送信号。我想知道是否有一种简单的方法可以将字符串转换为信号代码(在 signal.h 中)。
目前,我正在通过编写自己的 map 来做到这一点,如下所示:
signal_map["SIGSTOP"] = SIGSTOP;
signal_map["SIGKILL"] = SIGKILL;
....
但是为所有信号写这个很乏味。所以,我一直在寻找一种更优雅的方式(如果存在的话)。
最佳答案
不确定这是否是您想要的,但是: strerror() 将错误代码转换为错误消息, 类似strsignal()将信号转换为信号消息。
fprintf(stdout, "signal 9: %s\n", strsignal(9));
fprintf(stdout, "errno 60: %s\n", strerror(60));
Output:
signal 9: Killed
errno 60: Device not a stream
关于c++ - 如何将信号名称(字符串)转换为信号代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6990093/