Linux操作系统原理与应用实验 实验一 实验二 问题总结

本文是在进行Linux实验一和实验二所遇到的问题或学到的小知识进行总结,问题的解决方法或许不难,也都能搜到,但是如果笔者自己总结下来能够节省很多人去搜索解决方法的繁琐步骤,节省大家的时间。

实验一 进程控制与进程通信

①隐式声明与内建函数不兼容
直接复制代码,exit()函数不兼容,只需在代码内#include<stdlib.h>即可
在这里插入图片描述

②没有那个文件或目录

直接复制代码,提示缺少库文件pthreadtypes.h,只需去掉types,即:#include<pthread.h>即可
在这里插入图片描述

③程序中有游离的\200\343
直接复制代码,提示程序中有游离的\200,\343,本质原因可能是因为复制的文档中的空格与操作系统中空格对应字符集不相同,导致编译器无法识别,只需去掉程序中空格,再在操作系统中重新打上即可。
在这里插入图片描述

④多线程程输出结果无变化
直接复制代码,发现程序中本来应该因为多线程争夺资源产生不一样的输出结果,但是实际上并没有。原因可能如下:①在虚拟机中的设置中,没有选择多核cpu②for循环中次数过少,尝试更大的for循环即可
在这里插入图片描述

⑤Makefile文件标红错误
直接复制代码,发现无法运行,只需去掉原有空格,再用tab进行缩进即可。
在这里插入图片描述

⑥代码不报错,但是无输出结果
直接复制源代码,发现无输出结果,实际上为源代码输出结果处函数有误,n前跟一个\即可
在这里插入图片描述

⑦虚拟机字符乱码
安装虚拟机时,发现有很多方块字符乱码,原因可能是在一开始安装的时候未选择GNOME图形界面,之后进入命令行界面才开始重新安装,或许会导致中文字符集丢失。应该在一开始安装就选择GNOME图形界面,重装即可。
在这里插入图片描述
在这里插入图片描述

实验二 内存分配与回收

⑧Ctrl+d表示一个特殊的二进制值,表示EOF。
链接: 循环终止输入方式(Ctrl+Z,Ctrl+C,Ctrl+D(EOF))

⑨指针free之后仍然能赋值!
链接: 指针free后仍能赋值,why?

⑩realloc()解析
链接: realloc 用法
⑪_msize()用处
链接: _msize的用法
链接: _msize() 返回 new 分配内存的大小
⑫malloc()解析
链接: C动态内存分配(四)malloc与new分配内存大小查看函数

⑬find_task_by_vpid()函数在2.6.30之后的内核版本已经被替换。
在编译完内核之后尝试插入内核模块,发现提示如下,通过sudo dmesg发现报错函数,接着找到了新版本的函数进行替换。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

链接: find_task_by_vpid undefined问题
链接: 内核模块编程练习
Linux内核版本查看
链接: 查看Linux内核版本

⑭隐式函数声明解决方法:
在这里插入图片描述

链接: #C语言#警告:隐式声明函数‘xxx’

如上图所示,一般来说都是没有inlcude对应头文件,通过 man 2 XXXX可以直接找到对应的头文件名,方便简洁。
⑮段错误(吐核)
在这里插入图片描述

链接: [Linux] 什么是 段错误(吐核)?

感谢观看,希望对你有帮助~

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值