Unix信号与C++控制台输入输出全解析
1. Unix信号概述
Unix信号具备中断指定进程的能力,还允许子进程接收该中断,并按自身意愿进行处理。它能让用户处理特定类型的控制流和可能出现的错误,例如终端尝试关闭程序,或者可恢复的段错误。
1.1 无限循环进程示例
以下代码创建了一个无限循环的进程,每秒输出一次 “Hello World”:
#include <unistd.h>
#include <iostream>
int main(void)
{
while(true) {
std::cout << "Hello World\n";
sleep(1);
}
}
要停止这个程序,需使用 CTRL+C 命令,这实际上是通过Unix信号来告知shell终止该进程。
1.2 捕获信号示例
可以通过以下方式捕获 SIGINT 信号:
#include <signal.h>
#include <unistd.h>
#include <iostream>
void handler(int sig)
{
if (sig == SIGINT)
{
std::cout << "handler called\n";
}
}
int m
超级会员免费看
订阅专栏 解锁全文
2527

被折叠的 条评论
为什么被折叠?



