实验六 进程基础

实验六 进程基础

项目 
这个作业属于哪个课程 班级课程
这个作业的要求在哪里 作业要求
学号-姓名 17043111-何辉凡
作业学习目标 1. 掌握Linux系统环境C语言编程概念 2. 学习Linux系统进程概念

实验内容

1.请举例说明静态链接库的创建与使用。

 

 

#int add(int a, int b); //对使用函数的声明

 

静态链接库 libbase.a 创建

#ar -r libbase.a add.o sub.o #上面的两条命令可以合并成一条

使用静态链接库生成一个可执行文件app

2. 请举例说明共享库的创建与使用。

创建相应的目录及文件

已创建共享库 libbase.so

# gcc main.o ../lib/libbase.so -o ../bin/app #使用共享库 libbase.so创建可执行文件app

 

执行结果

3.编程实现一个简单文件复制命令。

 

 

利用生成的可执行程序将mycp.c复制内容到test文件中,再区分是否有什么不同

# diff //找出两个文件的不同点(比较的文件可以是目录)
4进程创建成功后父子进程分别输出不同的内容。

 

#make //编译生成可执行文件

重定向后的输出

5.使用fork创建多个子进程。

 

 

这里的输出是先输出父进程,在输出子进程(这些都是随机的),这里可以用简单的用 sleep 函数来控制进程输出

顺序,第一 个子进程最先输出,后面依次输出,最后父进程输出。

在标记位置加入 sleep 函数就能顺序输出

 

6.在 fork 之前以写的方式创建了一个文件 test.txt。然后 fork 出的子进程立即向文件中写入 “world”,然后睡眠5秒。而父进程在 fork
后睡眠3秒后向 test.txt 写入 "hello",并关闭描述符。子 进程恢复后,又向 test.txt 文件中写入 "lalala"后关闭描述符,结束。

 

 

 

7.分别在主函数中使用 execvp 启动 ls 命令以及使用 fork 函数产生子进程调用 execvp 启动 ls 。

 

利用 execvp 启动 ls 命令

 

 

使用 fork 函数产生子进程调用 execvp 启动 ls

8.创建5个僵尸进程,并在终端通过 ps axf 命令查看僵尸进程信息。

 

 

 

9.通过 wait 来清理僵尸进程。

 

 

 

10.进程通过 waitpid 函数等待特定子进程结束,若该子进程不结束,父进程一直阻塞。

输入下列的代码,编译运行

 

 

 

posted @ 2020-05-06 22:40  怕晒的向日葵  阅读(181)  评论(0编辑  收藏  举报