个人建的博客:http://34.96.139.59/archives/16

项目一:Linux进程创建与控制

1、实验目的

1)了解进程概念,掌握fork函数和vfork函数的特性和使用方法,观察fork函数和vfork函数的工作机制;

2)理解进程之间的创建关系,认识多进程程序中父子进程之间的关系及创建原理;

2、实验环境

Red Hat 企业版 Linux 6.3;VMware虚拟机

3、预备知识

1)vi编辑器的使用

vi ‘文件名’:vi打开某文件
i进行插入,esc退出模式。:指令准备。
q退出,w写入保存,!强制

2)gcc编辑器的使用

gcc test.c -0 test

3)fork系统调用

创建子程序,子程序完全复制父程序,并从头开始。子程序与父程序是同时执行。

4)vfork系统调用

同fork,但vfork的子程序执行完,父程序才继续执行,并且父子进程共享数据段

5)getpid系统调用

getpid返回当前进程标识,getppid返回父进程标识。

6)wait系统调用

等待一段时间

7)cat系统调用

cat x.txt :显示文件内容

8)write系统调用

将信息写入文件

9)open系统调用

打开文件

4、实验内容

1)使用vi编辑器编写一段程序,输出为“This is a sample!”,使用gcc命令编译并运行输出。

代码:

#include<stdio.h>

int main(){

         printf("This is a sample!\n");

         return 0;

}

编译执行:

gcc test.c -o test

./test

2)编写一段程序,定义公共变量glob,初值为3,main函数局部变量loc,初值为3,使用fork命令创建子进程,要求父进程显示“parent process doesn't change the glob and loc :\n”,子进程显示“child process tchanges glob and loc :\n”,父子进程均输出glob和loc的值,运行错误则输出“fork()error!”。

代码:

#include<stdio.h>

int glob = 3;

int main(){

         int pid;

         int loc = 3;

         printf("before fork(): glob = %d,loc = %d\n",glob,loc);

         if((pid=fork())<0){

                   printf("\nfork()error\n");

                   return 0;

         }else if(pid==0){

                   glob++;

                   loc--;

                   printf("\nchild process changes glob and loc;\n");

         }else

                   printf("parent process doesn`t change the glob and loc;\n");

         printf("glob = %d, loc = %d\n",glob,loc);

         return 0;

}

3)使用fork命令生成两个子进程,子进程A将“1111…9999”写入文件myfile,子进程B将“aaaa…zzzz”写入文件myfile

代码:

4-3

#include<stdio.h>

#include<unistd.h>

#include<string.h>

int main(){

         char* a="1111***9999";

         char* b="aaaa***zzzz";

         int p1,p2;

         FILE *fd;

         fd = fopen("myfile","a+");

         if(p1=fork()){

                   fwrite(a,strlen(a),1,fd);

         }else if(p2=fork()){

                   fwrite(b,strlen(b),1,fd);

         }else{

                   fclose(fd);

                   return 0;

         }

}

可选学习内容:

局域网文件互传。(适用于局域网,或虚拟机传文件到主机)

WinSCP软件,后续懒的写了。

操作系统综合实践一

相关文章:

  • 2021-11-08
  • 2021-12-20
  • 2021-09-13
  • 2021-05-22
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-05
  • 2022-12-23
  • 2021-11-19
  • 2021-12-31
  • 2021-12-29
  • 2021-12-19
相关资源
相似解决方案