linux
Shonm
用blog记录点点滴滴。。。成长的轨迹一步一个印
展开
-
linux命令行下命令参数前的一横(-)和两横(--)的区别
在解释这些区别之前我们先了解一下有关linux的背景知识,这个需要大家先认真看完就会对这些区别有更深入的了解,对linux也有更深的了解。关于System V和BSD风格以及他们与Linux的关系:1、System V 和BSD同出于AT&T实验室的两个不同的部门,SystemV是一个Unix的商业化标准,BSD为Unix标准化的Berkeley风格。2、由于Linux是Linus Torv...转载 2017-02-07 16:30:03 · 430 阅读 · 0 评论 -
实现自己的malloc
按照上篇文章的思路,自己实现的一个简单malloc:#include <unistd.h>#include <stdio.h>struct header_t { size_t size; //8B unsigned is_free; //4B struct header_t* next; ...原创 2019-01-19 20:57:58 · 1173 阅读 · 2 评论 -
linux内存分配管理
本打算尽快完善一下mlua的gc,按照我学习的思路,如果对一块东西底层的原理或者他的来龙去脉都不清楚的话,是很难透彻理解相关东西的。对于gc我们就要搞清楚程序的内存是如何被分配,又是如何被释放的,对应的底层又是怎么实现的。说实话,在这之前我对这些都是很模糊的,动态分配内存用C++只会new delete,用C语言只会malloc和free,根本没有关心他们底层的原理和实现,趁这个机会好好的学习一下...原创 2019-01-19 20:11:02 · 882 阅读 · 0 评论 -
linux 命令行解析
从windows开发转向linux开发的程序员,实际写代码过程中还是有很多不同的,第一个遇到的不同可能是linux的命令行。windows 应用开发很少有命令行,而linux命令几乎全有命令行,这是因为linux没有操作界面,只能以命令行的方式来切换程序运行不同的命令,或调节命令的参数。比方说你要统计一个文件有多少个字符,在windows下你可以直接用界面操作来选择一个文件,而在linux下你只能...原创 2018-09-17 19:32:54 · 805 阅读 · 1 评论 -
一个故事读懂git基本工作方式
快毕业了,张小明要完成毕业论文,限期3个月完成。负责论文的李老师会定期要学生上交论文,抽查论文完成的情况。而且还规定要保留原稿,以证明论文不是抄袭的。由于论文篇幅很长,内容繁杂,而且那时候还没有计算机,不能写电子文档,修修改改是避免不了的,所以张小明自己想了一个法子,来对付论文。张小明每次写一段论文时,都先在草稿本上写,哪怕修修改改写的很乱也没有关系,因为只有他一个人看得到。在草稿本上修改...原创 2018-07-31 10:26:35 · 553 阅读 · 1 评论 -
匿名管道为什么可以在父子进程间通信
网上关于匿名管道的用法已经非常多了,这里就不再过多的介绍,只关注本篇的主题.匿名管道创建函数pipe()系统调用底层的实现就相当于一个特殊的文件系统,每次调用的时候创建一个inode关联着两个file,一个用于读,一个用于写,从而实现数据的单向流动.一个管道实际上就是一个无形(只存在于内存中)的文件,对这个文件的操作要通过两个已经打开的文件进行,分别代表该管道的两端 .每个文件都是有一个inode...原创 2018-04-20 19:52:14 · 2496 阅读 · 0 评论 -
linux中fork--子进程是从哪里开始运行
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值: 1)在父进程中,fork返回新创建子进程的进程ID; 2)在子进程中,fork返回0; 3)如果出现错误,fork返回一个负值;创建新进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。此时,两个进程都从原创 2017-02-22 23:06:24 · 1838 阅读 · 2 评论 -
linux IO操作1
其中S_IFBLK是块设备文件,S_IFCHR是字符设备文件,S_IFIFO是命名管道块设备文件和字符设备文件的区别是:Linux中I/O设备分为两类:字符设备和块设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的原创 2017-02-22 12:42:53 · 593 阅读 · 0 评论 -
Linux下C语言的调试
调试是每个程序员都会面临的问题. 如何提高程序员的调试效率, 更好更快地定位程序中的问题从而加快程序开发的进度, 是大家共同面对的问题. 可能Windows用户顺口就会说出:用VC呗 :-) , 它提供了设置断点, 单步跟踪等的图形界面, 使调试起来直观易用. 但Linux用户可能要生闷气了 O:-) : 难道我们Linux程序员就只能使用原始的调试方法, 在代码中加入printf信息吗?难道转载 2017-02-10 17:18:11 · 337 阅读 · 0 评论 -
从文件 I/O 看 Linux 的虚拟文件系统
1 引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文...转载 2019-07-31 12:56:36 · 406 阅读 · 0 评论