操作系统--基于Linux的进程的并发执行1(超详细/设计/实验/作业/练习)

目录

  • 课程名:操作系统原理及Linux应用
    • 内容/作用:设计/实验/作业/练习
    • 学习:基于Linux的进程的并发执行1
    • 一、前言
    • 二、环境与设备
    • 三、原理
    • 四、内容
    • 五、总结与分析

课程名:操作系统原理及Linux应用

内容/作用:设计/实验/作业/练习

学习:基于Linux的进程的并发执行1

一、前言

  1. 理解并发进程的基本概念和执行特征
  2. 理解进程的资源继承和并发执行。
  3. 理解进程的资源竞争和互斥实现。

二、环境与设备

1.软件:虚拟机VMware
2.环境:Linux系统环境

三、原理

创建子进程fork( )
   pi d=fork()
   pid==-1:进程创建失败
   pid==0:子进程创建成功并且执行子进程pid>0:子进程创建成功并且执行父进程。

进程终止 exit(int status)
   父进程在子进程末尾置exit(O)终止子进程,子进程向父进程发软中断信号。
   status是子进程返回给父进程的整数,以备查考。

进程等待wait(int status)
   父进程通过wait(O)等待子进程终止,直到收到子进程发来的进程终止软中断信号后被唤醒。

进程互斥lockf(fd,functi on,size)
   被锁定的文件标识
   stdin0
   stdout
1
   function:对锁定对象的控制0:开锁1:加锁
   size==0:表示从调用Lockf()后开始锁定

四、内容

   1, 进程的并发执行代码

#include
#include
int mian()
{ 
    printf("--System call execlp testing---\n");
    execlp("date","date",0);
    printf("exec error!\n");
    return 0;
}

#include
#include
#include
int wait_mark
void waiting()
{
    while(weit_mark==1);
}
void stop()
{
    wait_mark=0;
}
int main()
{
    int p1,p2;
    while((p1=fork())==1);
    if(p1==0)
    {
        wair_mark=1;
        signal(SIGINT,SIG_IGN);
        signal(16,stop);
        waiting();
        printf("ChildProcess 1 is Killed by Parent!\n");
        exit(0);
        
    }
    else
    {
        while((p2=fork())==1);
        if(p2==0)
        {
            wait_mark=1;
            signal(SIGINT,SIG_IGN);
            signal(17,stop);
            waiting();
            printf("ChildProcess 2 is Killed by Parent!\n");
            exit(0);
            
        }
        else
        {
            wait_mark=1;
            signal(SIGINT,stop);
            waiting();
            kill(p1,16);
            kill(p1,17);
            wait(0);
            wait(0);
            printf("Parent Process id Killed!\n");
            exit(0);
        }
    }
    return 0;
}

五、总结与分析

   好好学习,天天向上。

你可能感兴趣的:(操作系统及Linux应用,linux,运维,数据库,mysql,物联网)