OS-Lab2-Linux进程控制相关命令和系统调用(含gcc编程)

news/2024/10/22 17:34:40

实验目的
1) 概念:Linux的gcc编译器
2) 演示/实践:gcc编译器的初步和入门(编写一个带printf的while程序)
3) 演示/实践:Linux进程控制相关的命令(如ps/pstree/top/kill/等)演示/实践:Linux进程控制相关的系统调用(如fork()/getpid()等)
4) 概念:Linux的gdb调试器
5) 概念:Linux的make工具及其Makefile
6) 演示/实践:make工具及其Makefile的初步和入门(多个c/h文件构成的一个C项目:但是存在bug);进而用gdb调试器来调试和分析此bug
实验步骤:
Task1: gcc编译器的初步和入门:利用vi/vim编辑器,输入以下程序while.c的代码,然后利用gcc编译器进行编译、链接,和运行




Task2: Linux进程控制相关的命令:利用top/ kill/ps/htop/等的命令,要求完成的步骤如下描述。
1.输入top观察当前进程状态:

2.运行以上lab1的while程序,再次执行top命令,然后观察新的、当前的进程状态

3. 等待while程序执行完成正常结束后,进程消失

4. 重新执行while程序,并使用kill结束程序,top中进程消失


5. 使用htop命令

Task3: Linux进程控制相关的系统调用(如fork()/getpid()等):通过process.c程序来理解Linux进程创建的过程和特点(如父子进程的关系、“一次调用和两次返回”的特点)。具体过程包括:利用vi/vim编辑器,输入以下程序process.c的代码,然后利用gcc编译器进行编译、链接,和运行




Task4: make工具及其Makefile的初步和入门,gdb调试器的初步和入门:利用vi/vim编辑器,编写一个由多个文件(如.c和.h)构成的程序,通过Makefile文件来使用make,从而完成本程序的编译和链接过程,然后利用gcc编译器进行编译、链接和运行,观察其存在的bug,然后利用gdb调试器分析和解决这个bug。

点击查看代码
/*main.c*/
#include "mytool1.h"
#include "mytool2.h"
int main()
{mytool1_print("hello mytool1!");mytool2_print("hello mytool2!");return 0;
}
/*mytool1.c*/
#include "mytool1.h"
#include <stdio.h>
void mytool1_print(char *print_str)
{printf("This is mytool1 print : %s ",print_str);
}
/*mytool1.h*/
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_Hvoid mytool1_print(char *print_str);
#endif
/*mytool2.c*/
#include "mytool2.h"
#include <stdio.h>
void mytool2_print(char *string)
{char * string2;int size,i;size = strlen(string1);string2 =(char*)malloc(size+1);for(i=0;i<size;i++)string2[size-i]=string1[i];string2[size+1]=‘\0’;printf(“the changed string is %s\n ”,string2);
}
/*mytool2.h*/
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_Hvoid mytool2_print(char *print_str);
#endif
![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140001172-2123688265.png) 根据编译过程中的报错添加string1的定义,修改mytool2.c为如下: ![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140047261-1296576162.png) 修改之后继续执行make此时发现执行成功 ![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140124153-603876030.png) 然后进行gcc编译、链接、运行代码: ![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140757691-1177487262.png) 运行时发现语句输出不全,故使用gdb对其进行调试,然后发现应该是mytool2.c的问题: ![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140822745-1861613314.png) 对mytool2.c进行调试,然后发现应该是循环体出问题: ![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140859324-1094517684.png) 然后进入代码进行修改,如下,具体修改了size-i与size+1: ![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140928102-2123014239.png) 输出得到正确输出: ![](https://img2024.cnblogs.com/blog/3538560/202410/3538560-20241016140950705-837348803.png)**Task5** 请用自己的语言(当然,也可结合辅助的图),谈谈你对Linux的fork()系统调用的“一次调用和两次返回”这个特点的理解: Linux 中的 fork() 系统调用是用于创建一个新的进程的函数,它会在当前进程的基础上复制一个完全相同的子进程,并且在父进程和子进程中都会返回。这样,fork() 调用一开始似乎只有一次返回,但实际上会在两个进程中各返回一次,形成了“一次调用,两次返回”的特点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72251.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【北汇信息】网络及诊断自动化测试软件集成方案

方案衔接本方案是对北汇信息提供的CAN/CAN FD/CAN XL/LIN/FlexRay总线网络及诊断测试解决方案的进一步补充和优化,虽然此测试系统方案的结构和接口采用模块化的设计思路,可根据测试需求进行功能模块的裁剪和定制,使测试系统具备一定的延展性并可适配不同平台变型测试需求,但…

网站怎么修改用户密码?网站密码被修改?

网站如何修改用户密码登录账户:用户首先需要登录到他们的账户。进入账户设置:通常在用户界面的顶部或侧边栏会有一个“账户设置”或“个人资料”的选项。找到密码管理:在账户设置页面中,找到与密码相关的部分,如“更改密码”、“安全设置”等。输入当前密码:为了验证身份…

后台网站标题修改?后台怎么修改网站?

要修改后台网站的标题或进行其他设置,通常需要登录到网站的管理后台。具体步骤可能会因不同的后台管理系统而有所不同,但一般流程如下:登录后台:打开浏览器,输入后台管理系统的URL。 输入用户名和密码登录。找到网站设置:登录后,查找“网站设置”、“系统设置”或类似的…

网站后台修改前端不更新?公司网站的名称怎么修改?

要解决网站后台修改后前端显示不更新的问题,以及如何修改公司网站的名称,可以按照以下步骤操作:清除浏览器缓存:浏览器会缓存网页资源,当页面没有变化时,浏览器会直接从缓存加载页面,导致看到的是旧版本的内容。 清除浏览器缓存或按 Ctrl + F5 强制刷新页面,确保加载最…

网站可以修改用户密码吗?网站怎么修改密码?

网站通常是可以修改用户密码的,这是一项基本的安全功能。以下是实现这一功能的一般步骤:提供修改密码界面:在用户个人设置或账户管理页面中提供一个修改密码的选项。验证用户身份:为了确保安全,在允许用户修改密码之前需要验证用户的身份。常见的做法是要求用户输入当前密…

R语言经典统计分析

经典统计分析包括了许多常用的统计方法和技术,用于数据的描述、推断和建模。本节将介绍经典统计分析方法(包括t检验、方差分析、卡方检验、线性回归)在R语言中的实现。 5.1.1 t检验 样本均值(sample mean),又称样本均数,是描述一组数据集中趋势的重要统计量。它是通过将…

修改公司网站?网站模板如何自定义修改?

修改公司网站并自定义网站模板是一个涉及多个步骤的过程。以下是一些基本的指导步骤,帮助您完成这一任务: 1. 登录网站后台管理访问后台:通常在您的域名后面加上 /admin 或 /wp-admin 等路径,例如 https://yourdomain.com/admin。 登录:使用您的管理员账号和密码登录。2. …

网站后台修改更新不了?网站模板源码修改?

当你遇到网站后台无法更新或需要修改网站模板源码的情况时,可以按照以下步骤进行排查和解决:检查权限设置:确保你有足够的权限对网站后台或源码进行修改。 检查文件和目录的权限设置,确保服务器上的用户有权限读取和写入相关文件。查看错误日志:查看服务器的错误日志,通常…