简介
菜鸟驿站
1 信号量
1.1 signal()函数
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
或
void (*signal(int signum, void (*hangler)(int)))(int)
#include <iostream>
#include <csignal>
#include <unistd.h>
#include <stdlib.h>
using namespace std;
void signalHandler(int signum)
{
cout << "Interrupt signal (" << signum << ") received.\n";
// 清理并关闭
// 终止程序
exit(signum);
}
int main()
{
// 注册信号 SIGINT 和信号处理程序
signal(SIGINT, signalHandler);
while (1) {
cout << "Going to sleep...." << endl;
sleep(1);
}
return 0;
}
1.2 raise()函数
NOTE: rause()生成信号
#include <iostream>
#include <csignal>
#include <unistd.h>
#include <stdlib.h>
using namespace std;
void signalHandler(int signum)
{
cout << "Interrupt signal (" << signum << ") received.\n";
// 清理并关闭
// 终止程序
exit(signum);
}
int main()
{
// 注册信号 SIGINT 和信号处理程序
signal(SIGINT, signalHandler);
int i = 1;
//++i, 先++再判断; i++, 先判断再++
while (++i) {
cout << "Going to sleep...." << endl;
if (i == 3) {
raise(SIGINT);
}
sleep(1);
}
return 0;
}
版权声明:本文为yabxingzi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。