c++ - 如何将信号名称(字符串)转换为信号代码?

标签 c++ linux posix signals

我正在编写一个程序,从命令行读取信号名称(例如 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/

相关文章:

linux - IPC 命名信号量的 POSIX 实现

c++ - 无法使用 PropSheet 创建居中的属性表对话框

c++ - 可识别 C++ 的 Diff 实用程序

regex - 如何使用 bash 脚本验证电子邮件 ID?

c - POSIX 标准是否规定了像 read() 这样的调用约定函数应该遵循什么?

c - 调用 SIGINT 时终止线程 - C

c++ - 从 Eigen 旋转和平移矩阵创建 Sophus::SE3 对象并返回

c++ - 自由人 : Unable to compile the Java API on Ubuntu

java - 数据类型为 `TIMESTAMP(6) with Local Time Zone` 的 oracle 11g 在 csv 中存档了 Windows 和 Linux 中的不同数据

c - Linux C 程序 : How to find the library to which a function belongs