volatile是C语言的一个关键字,该关键字的作用是保持内存的可见性
volatile.c文件如下:
#include
#include
int flag = 0;
void handle(int signo)
{
printf("收到一个 %d号信号\n",signo);
flag = 1;
}
int main()
{
signal(2,handle);//捕获2号信号
while(!flag);
printf("进程正常退出!\n");
return 0;
}
编译:
gcc volatile.c
运行:
./a.out
^C收到一个 2号信号 (此处需要按住ctrl+c结束运行)
进程正常退出!
编译:
gcc volatile.c -O3
运行:
./a.out
^C收到一个 2号信号
^C收到一个 2号信号
^C收到一个 2号信号
由上可以看到ctrl+c无法结束运行
#include
#include
volatile int flag = 0;
void handle(int signo)
{
printf("收到一个 %d号信号\n",signo);
flag = 1;
}
int main()
{
signal(2,handle);//捕获2号信号
while(!flag);
printf("进程正常退出!\n");
return 0;
}
编译:
gcc volatile.c -O3
运行:
./a.out
^C收到一个 2号信号
进程正常退出!