美文网首页
【虚拟机】 get 软中断通信

【虚拟机】 get 软中断通信

作者: 秣禾 | 来源:发表于2020-06-10 17:01 被阅读0次

实验目的

1、简单了解掌握软中断通信的定义知识。

2、了解什么是信号。

3、了解Linux系统环境下进程之间软中断通信的基本原理。

实验任务

(1)使用系统调用fork()创建两个子进程
(2)再用系统调用signal()让父进程捕捉键盘上发出的中断信号Ctrl+C
(3)当父进程接收到这两个软中断的某一个后,父进程用系统调用kill()向两个子进程分别发送软中断信号
(4)子进程捕捉到软中断信号,然后分别输出下列信息后终止:
Child process 1 is killed by parent !!
Child process 2 is killed by parent !!
(5)父进程调用wait()函数等待两个子进程终止后,输入以下信息,结束进程执行:
Parent process is killed!!

实验内容

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<signal.h>
#include<stdlib.h>
int wait_flag;
void stop();
int main()
{
    int pid1,pid2;
    signal(2,stop);
    pause();
    while((pid1 = fork())== -1);
    if(pid1 > 0)
    {
      while((pid2 = fork()) == -1 );
      if(pid2 > 0)
      {
        wait_flag= 1;
        sleep(5);
        kill(pid1, 16);
        kill(pid2,17);
        wait(0);
        wait(0);
        printf("\nparent process is killed!!\n");
        exit(0);
      }
      else
      {
        wait_flag= 1;
        signal(17,stop);
        printf("\nchild process 2 is killed by parent!!\n");
        exit(0);
      }
    }
    else
    {
      wait_flag= 1;
      signal(16,stop);
      printf("\nchild process 1 is killed by parent!!\n");
    }
    }
 void stop()
{
    wait_flag = 0;
}

实验结果及分析

软中断通信
1、系统调用kill(pid,sig)和signal(sig,func)被用来传递和接收软中断信号,进程号为pid的通过,signal(sig,func)捕捉到信号sig之后,执行预约的动作func,从而达到这两个进程的通信目的。
2、上述程序中,signal( )都放在一段程序的前面部位,而不是在其他接收信号处。这是因为signal( )的执行只是为进程指定信号值16或17的作用,以及分配相应的与stop( )过程链接的指针。因而,signal( )函数必须在程序前面部分执行。
3、先预设中断信号,创建子进程pid1、pid2,预设两个进程的中断信号,在按下Ctrl+C时,父进程向两个子进程发送中断信号,子进程捕捉到信号后输出相应信息,完成后终止,最后按Ctrl+C输出“parent process is killed!!”终止。

相关文章

  • 【虚拟机】 get 软中断通信

    实验目的 1、简单了解掌握软中断通信的定义知识。 2、了解什么是信号。 3、了解Linux系统环境下进程之间软中断...

  • Linux信号机制与信号处理

    信号(signal)是Linux进程间通信的一种机制,全称为软中断信号,也被称为软中断。信号本质上是在软件层次上对...

  • Linux中断机制

    1、硬中断 2、软中断 3、软中断信号

  • Linux中断中能否sleep

    中断、软中断、硬件中断、异常、同步中断、异步中断,这几个概念非常容易混淆,这里对本文使用的中断、软中断、softi...

  • 软中断

    从“取外卖”看中断 假如说你订了一份外卖,但是不确定外卖什么时候送到,也没有别的方法了解外卖的进度,但是,配送员送...

  • 软中断

    含义 为了解决中断处理程序执行过长和中断丢失的问题,Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部...

  • 11.03 arduino lec3

    一 实验目的 1.中断概念的了解以及运用 2.串口通信plus:蓝牙通信,软串口库的使用 3.进一步熟悉datas...

  • 小马哥网络课笔记27------网络安全

    安全威胁 截获:窃听通信内容 中断:中断网络通信 篡改:篡改通信内容 伪造:伪造通信内容 ARP欺骗 ARP欺骗(...

  • 网络-安全

    网络通信中面临的4种安全威胁 截获:窃听通信内容 中断:中断网络通信 篡改:篡改通信内容 伪造:伪造通信内容 网络...

  • TCP/IP网络

    软中断: 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。通常,软中断是一些对I/O的请求...

网友评论

      本文标题:【虚拟机】 get 软中断通信

      本文链接:https://www.haomeiwen.com/subject/aghgzhtx.html