一个证明signal函数运行机制的函数!

 1 #include<stdio.h>
 2 #include<signal.h>
 3 void SignHandler(int iSignNum)
 4 {
 5         printf("\nCapture signal number is:%d\n",iSignNum);
 6 }
 7 int main(void)
 8 {
 9         int i;
10         signal(SIGINT,SignHandler);
11         while(1)
12         {
13                 for(i=0;i<10;i++)
14                 {
15                         printf("%d\n",i);
16                         sleep(1);
17                 }
18
19         }
20         return 0;
21 }

程序运行结果如下

 1 0
 2 1
 3 2
 4 3
 5 4
 6 5
 7 6
 8 7
 9 8
10 9
11 0
12 1
13 2
14 3
15 4
16 5
17 6
18 7
19 8
20 ^C
21 Capture signal number is:2
22 9
23 0
24 1
25 2
26 3
27 ^C
28 Capture signal number is:2
29 4
30 5
31 6
32 7
33 8
34 9
35 0
36 1
37 ^C
38 Capture signal number is:2
39 2
40 3
41 4
42 5
43 6
44 7
45 8
46 9
47 0
48 1
49 2
50 3
51 ^C
52 Capture signal number is:2
53 4
54 5
55 6
56 7
57 8
58 9
59 0
60 1
61 2
62 3
63 ^\Quit (core dumped)

充分说明了信号相当于另外一个进程?它和主进程不中断

时间: 2024-10-07 02:11:14

一个证明signal函数运行机制的函数!的相关文章

探究PHP的函数运行机制

在任何语言中,函数都是最基本的组成单元.对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?本文将从原理出发进行分析结合实际的性能测试尝试对这些问题进行回答,在了解实现的同时更好的编写php程序.同时也会对一些常见的php函数进行介绍. PHP函数的分类 在php中,横向划分的话,函数分为两大类:user function(内置函数)和internal function(内置函数).前者就是用户在程序中自定义的一些函数和方法,后者则是php本身提供的各类

虚函数运行机制

class A { public: virtual void foo (void) { ... } virtual void bar (void) { ... } }; class B : public A { public: void foo (void) { ... } }; int main(){ A* pa = new A; pa->foo (); // A::foo pa->bar (); // A::bar --------------------- A* pa = new B;

C++编译器函数模版机制剖析 - 函数模版的本质

思考:为什么函数模板可以和函数重载放在一块.C++编译器是如何提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> using namespace std; // 1.cpp // g++ -S 1.cpp -o 1.s template <typename T> void myswap(T &a, T &b) { T c = 0; c = a; a = b; b = c; cout <&l

C++虚函数运行机制

C++ 虚函数表解析 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有"多种形态",这是一种泛型技术.所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法.比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议. 关于虚函数的使用方法,我在这里不做过多的阐述.大家可以看看相关的C++的书籍.在这篇文章中,我只想从虚函

linux下实现在程序运行时的函数替换(热补丁)【转】

转自:http://www.cnblogs.com/leo0000/p/5632642.html 声明:以下的代码成果,是参考了网上的injso技术,在本文的最后会给出地址,同时非常感谢injso技术原作者的分享. 但是injso文章中的代码存在一些问题,所以后面出现的代码是经过作者修改和检测的.也正因为这些错误,加深了我的学习深度. 最近因为在学习一些调试的技术,但是很少有提到如何在函数运行时实现函数替换的. 为什么会想到这一点?因为在学习调试时,难免会看到一些内核方面的调试技术,内核中的调试

在程序运行时实现函数替换

声明:以下的代码成果,是参考了网上的injso技术,文章最后会给出地址. 另外一个,injso文章中的代码实际上不能够运行起来的,后面出现的代码都是经过我个人修改和检测的. 最近因为在学习一些调试的技术,但是很少有提到如何在函数运行时实现函数替换的. 为什么会想到这一点?因为在学习调试时,难免会看到一些内核方面的调试技术,内核中的调试有一个kprobe,很强大,可以实现运行时的函数替换.其原理就是hook,钩子,但是学习了这个kprobe之后会发现,kprobe内部有检测所要钩的函数是不是属于内

mapreduce任务失败、重试、猜測式运行机制小结

mapreduce中我们自己定义的mapper和reducer程序在运行后有可能遇上出错退出的情况,mapreduce中jobtracker会全程追踪任务的运行情况,对于出错的任务mapreduce也定义了一套自己的处理方式. 首先要明白的是mapreduce推断任务失败的方式.三种情况下任务会被觉得运行失败:返回非0值.产生java异常.超时(长时间没响应).对于第一种,通经常使用于streaming程序.假设你的mapper或reducer程序结束的时候返回了非0值,那么mapreduce会

第一章 Windows程序内部运行机制(4)WinMain函数

WinMain函数相当于main函数,作为Windows程序的入口函数.当WinMain结束或返回时,Windows程序结束. 一个win32应用程序,该程序创建一个窗口并在窗口中响应键盘与鼠标消息,程序的实现步骤为: 1.WinMain函数的定义:2.创建一个窗口:3.进行消息循环:4.编写窗口过程 WinMain函数的定义: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, in

多线程中的信号机制--signwait()函数【转】

本文转载自:http://blog.csdn.net/yusiguyuan/article/details/14237277 在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别,可以说是完全不同.在进程环境中,对信号的处理是,先注册信号处理函数,当信号异步发生时,调用处理函数来处理信号.它完全是异步的(我们完全不知到信号会在进程的那个执行点到来!).然而信号处理函数的实现,有着许多的限制:比如有一些函数不能在信号处理函数中调用:再比如一些函数read.recv等调用时会被异