当前位置:首页 » 操作系统 » sigintlinux

sigintlinux

发布时间: 2022-07-03 18:10:59

linux环境下使用signal函数进行进程间通信的问题

测试了一下,三个进程都会收到SIGINT信号。

原程序中,child1, child2都收到SIGINT信号,调用stop(), 之后被唤醒,打印"child process ... is killed by parent!",事实上kill这两个child的不是parent,是它们自己的SIGINT。

放到①处,child1收到SIGINT信号,默认的行为是把自己杀了,当然也来不及打印任何东西了。child2收到SIGINT信号,打断waiting(),打印"child process 2 ...",然后退出。杀死它的也不是SIGUSR2信号。

放到②处,child1, child2收到SIGINT信号,默认的行为是立即把自己杀了,也来不及打印任何东西了。

测试方法:

// 打印谁执行、被什么信号打断
static void stop(int signal) {
printf("stop %d by signal %d\n", getpid(), signal);
wait_mark=0;
}

// 在parent进程中,打印各进程id
printf("parent %d, child1 %d, child2 %d\n",getpid(),p1,p2);

如果让parent成为杀死child的兇手,可以在child1,child2中加入:
signal(SIGINT, keep_me_alive);

// 不理睬SIGINT信号
static void keep_me_alive(int signal) {
}

这时打印结果就一样了

⑵ linux signal 11 是什么意思

通过kill -l 可以查看信号列表,11 是段错误
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX

⑶ linux中的signal怎么使用

signal函数的定义很复杂,但是它的用法还是比较简单的,你记住它的两个参数就可以了。signal有两个参数sig和func,signal这个函数是用来接收信号并处理的,所以sig参数表示将要处理哪种类型的信号,而func参数是一个函数指针,用来指定信号的处理函数,也就是当程序接收到sig那个类型的信号后,就会调用func指针指向的函数。func指针的原型是:
void (*func) (int)
所以信号的处理函数必须是一个返回void,只有一个int类型参数的函数。
比如如果程序需要处理Ctrl+C组合键产生的信号,就可以这样使用signal函数:
(void) signal(SIGINT, myfunc);
而myfunc函数可以这样定义:
void myfunc(int sig)
{
printf("Hello, the signal is %d\n", sig);
// 因为现在处理的是Ctrl+C信号,所以下面要
// 恢复程序对Ctrl+C的默认反应
(void) signal(SIGINT, SIG_DFL);
}

⑷ unix,linux环境编程中关于signal函数和kill函数问题

signal函数调用后会进入系统的信号队列,具体什么时候执行是不可控的。

⑸ Linux信号对应的按键

ctl+x
ctl+z
ctl+/

其他的信号需要在程序中调用raise来发送。

⑹ 关于linux中信号SIGINT的捕获问题,求大大们指教

网上有Webtop的破解方法,可在Webtop上安装全功能版本的Linux。Webtop其实就是一个缩水版的ubuntu。
但是那个Ubuntu是有很大的限制的,和PC的Ubuntu区别很大。基本上是只能上网和使用非常有限的一些应用。要直接使用ubuntu得破解,而且还很麻烦。
我现在就等Webtop到手开工了。
至于Linux支持的CPU,那得看发行版。部分Linux发行版是支持目前所有的商用CPU的,从X86到ARM到IA64通吃,也有部分是高度专精的,如Arch就只支持X86.
不过我强烈不建议用Atrix来做音乐制作系统,毕竟处理能力太弱,据说破解之后正常上网十分钟手机就变得非常烫。音乐制作那就可想而知了。
还有,你要使用USB声卡,还得考虑一下声卡有没有相应版本的驱动。
总之Webtop并不能算是全功能的笔记本,只能当上网本来用。我买Webtop也主要是因为笔记本太大太重,平时带着上课做笔记不方便才买来,记笔记基本上只用得到浏览器和文本编辑器,这些都不是问题。但是音乐制作,还是用完整的PC为好。
=======================
另外Android并不能算是Linux的发行版。Android的机制是运行在Linux内核上的一套虚拟机程序,其应用和直接基于Linux的本地应用程序有很大的不同,除非重编译,二进制包是不通用的。

⑺ Linux信号SIGTERM,SIGKILL,SIGINT和SIGQUIT的区别

SIGHUP 终止进程 终端线路挂断

SIGINT 终止进程 中断进程

SIGQUIT 建立CORE文件终止进程,并且生成core文件

SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟踪自陷
SIGBUS 建立CORE文件 总线错误
SIGSEGV 建立CORE文件 段非法错误
SIGFPE 建立CORE文件 浮点异常
SIGIOT 建立CORE文件 执行I/O自陷
SIGKILL 终止进程 杀死进程
SIGPIPE 终止进程 向一个没有读进程的管道写数据
SIGALARM 终止进程 计时器到时
SIGTERM 终止进程 软件终止信号
SIGSTOP 停止进程 非终端来的停止信号
SIGTSTP 停止进程 终端来的停止信号
SIGCONT 忽略信号 继续执行一个停止的进程
SIGURG 忽略信号 I/O紧急信号
SIGIO 忽略信号 描述符上可以进行I/O
SIGCHLD 忽略信号 当子进程停止或退出时通知父进程
SIGTTOU 停止进程 后台进程写终端
SIGTTIN 停止进程 后台进程读终端
SIGXGPU 终止进程 CPU时限超时
SIGXFSZ 终止进程 文件长度过长
SIGWINCH 忽略信号 窗口大小发生变化
SIGPROF 终止进程 统计分布图用计时器到时
SIGUSR1 终止进程 用户定义信号1
SIGUSR2 终止进程 用户定义信号2
SIGVTALRM 终止进程 虚拟计时器到时

⑻ 为什么Linux设置了SIGINT信号捕捉函数,按下Ctrl+C以后还会结束进程

因为Ctrl+C结束是不能阻止的

⑼ linux signal 如何捕获键盘上的del键。用信号量sigint只能捕获Ctrl

int catch( int sig )
{
printf("recv del\n" );
}

int main()
{
signal( SIG_INT, catch );
while( getchar() != '\n' ) ;
return 0;
}

按回车结束程序,按Del会输出recv del。
不行么

热点内容
hp存储扩容 发布:2024-11-17 23:29:16 浏览:566
在ftp中put表示什么 发布:2024-11-17 23:29:12 浏览:380
mvc多文件上传 发布:2024-11-17 23:13:56 浏览:152
玩游戏硬盘缓存32m 发布:2024-11-17 23:03:42 浏览:522
蓝光存储系统 发布:2024-11-17 23:03:41 浏览:433
地平线4提示配置低于最低怎么办 发布:2024-11-17 22:54:38 浏览:608
注册银行卡账户密码填什么 发布:2024-11-17 22:54:35 浏览:535
java压缩上传图片 发布:2024-11-17 22:26:59 浏览:625
plc编程课件 发布:2024-11-17 22:18:23 浏览:467
我的世界服务器信号一直在检测 发布:2024-11-17 22:09:52 浏览:545