- /*******************************************************************************
- *
- * 设计两个程序,A执行死循环,B程序给发送一个结束信号给程序A,当程序A接收到信号之后则执行相应的任务。
- * author:jindouliu2024@163.com
- * date:2025.5.8
- * Copyright (c) 2024-2025 jindouliu2024@163.com All right Reserved
- *
- * *****************************************************************************/
复制代码- //程序A
- #include<stdio.h>
- #include<signal.h>
- //信号处理函数
- void sig_handler(int signal)
- {
- //如果是接受到的信号是SIGUSR1,则执行
- if(signal == SIGUSR1){
- printf("this is SIGUSR1\n");
- }
- //如果是接受到的信号是SIGUSR2,则执行
- if(signal == SIGUSR2){
- printf("this is SIGUSR2\n");
-
- }
- }
- int main()
- {
- printf("running\n");
- signal(SIGUSR1,sig_handler);
- signal(SIGUSR2,sig_handler);
- while(1);
- return 0;
- }
复制代码- #include<stdio.h>
- #include<signal.h>
- int main(int argc,char *argv[])
- {
- int id,data;
- //获取进程id,在终端输入ps -ef命令
- printf("请输入id:");
- scanf("%d",&id);
- while(1){
- //判断输入的数据,根据数据发送相应的信号
- printf("请输入user1 or user2:");
- scanf("%d",&data);
- if(data == 1){
- kill(id,SIGUSR1);
- }
- if(data == 2){
- kill(id,SIGUSR2);
- }
- }
-
- return 0;
- }
复制代码 把快捷键Ctrl+C的对应信号进行阻塞,需要创建一个信号集,把该信号添加到信号集,对信号集属性进行设置(阻塞),然后测试发送该信号是否会被进程响应。- #include<stdio.h>
- #include<signal.h>
- #include<string.h>
- #include<errno.h>
- int main(int argc,char *argv[])
- {
- sigset_t arr;
- //将Ctrl +c 加入到信号集
- sigaddset(&arr,SIGINT);
- //创建一个信号集并设置为阻塞特性
- int flag = sigprocmask(SIG_BLOCK,&arr,NULL);
- if(flag == -1){
- printf("sigprocmask error\n");
- return 1;
- }
- while(1);
-
-
- return 0;
- }
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |