感谢支持
我们一直在努力

Linux进程控制实验

一. 实验目的
1.掌握Linux创建进程。
2.掌握Linux父子进程同步。
3.掌握Linux子进程的重新加载。
4.进一步熟悉linux下vi的使用和C源程序的编译与运行。


二. 实验准备
1. 创建子进程函数:
fork()
说明:返回值   0  创建成功,从子进程返回
    >0创建成功,从父进程返回,其值为子进程的PID号
    -1创建失败
2. 进程终止函数:
 exit(int status)
说明:是一个不返回函数,所用头文件#include<stdlib.h>
3. 父进程等待子进程终止函数:
 (1)wait()
 (2)waitpid()
 说明:头文件#include<sys/wait.h>
    #include<sys/types.h>
   返回值:≥0 表示有子进程终止,其值为终止子进程的pid号
    -1   表示无子进程终止
三.实验内容
编译实验,分析运行结果
1、 程序1(test1.c):要求画出进程家族树
#include <stdio.h>
int main(void)
{
    fork ( );
  fork ( );
  fork ( );
  putchar( ‘A’ );   
   }


2、 程序2(test2.c)
#include <stdio.h>
int main(void)
{
    int p1;
  putchar(‘x’);
  while((p=fork())= =-1);
if(p1= =0)
 putchar(‘b’);
  else
   putchar(‘a’);
   
  putchar(‘y’);
 }


3、 程序3(test3.c)
#include <stdio.h>
int main(void)
{
    int p1;
  putchar(‘x’);
  while((p=fork())= =-1);
if(p1= =0)
{
 putchar(‘b’);
 exit(0);
}
  else
   putchar(‘a’);
   
  putchar(‘y’);
 }


4、 程序4(test4.c)
#include <stdio.h>
int main(void)
{
    int p1;
  int x=1;
  while((p=fork())= =-1);
if(p1= =0)
{
 putchar(‘b’);
x=9;
   printf(“%d”,x);
    }
  else
  {
   putchar(‘a’);
   printf(“%d”,x);
  }
   }


5、 程序5(test5.c)
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main(void)
{
    int p1;
  while((p=fork())= =-1);
if(p1>0)
{
 wait(0);
 putchar(‘b’);
}
  Else
  {
   putchar(‘a’);
   exit(0);
  }  
 }


6、 
(1)子进程程序(chld.c)
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
main(  )
{
   Printf(“I am child\n”);
 Exit(0);
}


(2)父进程程序(test6.c)
#include <unistd.h>
#include <stdio.h>
int main()
{
Int p
While((p=fork())= = -1);
If(p= =0)
 Execl(“./chid”,0);
Else
{
 Wait(0);
 Exit(0);
}
}
四.实验报告
实验课题、目的与主要内容要求,实际进行的实验详细记录及每一个实验阶段环节的分析与结论。

一、实验目的
1.了解linux下进程创建的方法
2. 搞清楚linux下进程间的父子关系,以及系统对父子进程的调度
二、实验环境
  一台装有linux操作系统的计算机
三、预备知识
  1.了解fork()系统调用
      2.了解getpid()系统调用
四、实验编程示例


实验编程示例1:
#include<stdio.h>
#include<sys/types.h>
#include<unisted.h>


int main()
{
   int pid1;
   printf(“pid=%d\n”,getpid());
  
   pid1=fork();
   if(pid1= =0)
   {
     printf(“pid1= %d\n”,getpid());
     printf(“pid= %d\n”,pid1);
     return 0;
    }
    printf(“pid=%d\n”,pid1);


    if(pid1>0)
    {
     printf(“pid>0 %d\n”,getpid());
     printf(“pid>0 %d\n”,pid1);
    }
}


实验编程示例2:
int main()
{
   int pid1;
   printf(“pid=%d\n”,getpid());
  
   pid1=fork();
   if(pid1= =0)
   {
     printf(“pid1= %d\n”,getpid());
     printf(“pid= %d\n”,pid1);
   
    }
    printf(“pid=%d\n”,pid1);


    if(pid1>0)
    {
     printf(“pid>0 %d\n”,getpid());
     printf(“pid>0 %d\n”,pid1);
    }
}


五、实验要求
  编写程序,在一个进程中创建两个甚至多个进程,观察实验结果

赞(0) 打赏
转载请注明出处:服务器评测 » Linux进程控制实验
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏