Linux系统
文章平均质量分 84
只要代码敲得好,BUG就追不到我
让世界变得更美好
https://github.com/liusenlindegithub
展开
-
深入探究 Linux C中进程崩溃
目录前言栈内存异常以及案列分享堆内存异常以及案列分享Ptmalloc的内存管理前言LinuxC的内存管理融入了设计者很多高效的算法和思想,提供了用户直接可以操作的内存的“指针”,这也是其他语言不涉及的(除Go语言21世纪的C语言),但是对于指针这把双刃剑,开发者操作着进程的内存,难免造成意想不到的崩溃问题,其实踩内存情况应该把栈和堆(ptmalloc)分开,因为linux对这两块的管理...原创 2020-04-23 22:10:08 · 1555 阅读 · 4 评论 -
Linux进程退出码
#include int main(void) { return -1; } 编译好,然后运行,然后在shell里面查看进程退出码,键入:echo $?,我们发现拿到的进程退出码是255。我们返回的明明是-1,为什么拿到的却是255呢?还得从进程的状态码开始讲起,我们知道,当一个进程退出的时候,父进程一般都会进行收尾工作,就是调用wait或者w转载 2016-08-23 15:43:28 · 3322 阅读 · 0 评论 -
Linux进程间通信之——管道(整理)
进程间通信 fork pipe pie_t 等用法(管道机制 通信)每个进程各自有不同的用户地址空间,任 何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。如下图所转载 2016-08-23 11:11:04 · 628 阅读 · 0 评论 -
僵尸进程
在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init 来接管他,成为他的父进程…一个原创 2016-08-22 21:45:11 · 1508 阅读 · 0 评论 -
fork()与vfork()的区别
fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段 2. fork ()父子进程的执行次序不确定 vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec 或e转载 2016-08-22 08:57:21 · 587 阅读 · 0 评论 -
软链接与硬链接的小结(转)
对于一个文件来说,有唯一的索引接点(inode)与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊。 连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Window转载 2016-08-08 19:29:18 · 668 阅读 · 0 评论 -
Linux下常见的系统命令小结(转)
grep命令该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为[plain] view plain copy print?grep [-acinv] [--color=auto] '查找字符串' filename 它的常用转载 2016-08-08 19:06:03 · 909 阅读 · 1 评论 -
Linux下制作动态库与静态库
静态函数库: 1.这类库的名字一般是libxxx.a; 2.利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大动态函数库: 这类库的原创 2016-08-08 17:55:54 · 642 阅读 · 0 评论 -
Linux线程栈空间内存从glibc源码分析
1.何为线程栈空间泄露? 2. 何为anon内存? 3. 虚拟内存、物理内存、anon内存的联系 4. anon与线程的联系 5. glibc源码库线程创建与销毁anon关系 6. 使用pmap分析虚拟地址空间以及anon内存原创 2020-02-20 13:10:26 · 1378 阅读 · 1 评论 -
Linux之写时复制技术
写入时复制(Copy-on-write)是一个被使用在程式设计领域的最佳化策略。其基础的观念是,如果有多个呼叫者(callers)同时要求相同资源,他们会共同取得相同的指标指向相同的资源,直到某个呼叫者(caller)尝试修改资源时,系统才会真正复制一个副本(private copy)给该呼叫者,以避免被修改的资源被直接察觉到,这过程对其他的呼叫只都是通透的(transparent转载 2016-08-21 16:44:45 · 3126 阅读 · 1 评论 -
Linux基于流IO
基于流的I/O操作 流的打开函数:(1) FILE *fopen(const char *pathname,const char *type); (2) FILE *freopen(const char *pathname,const char *type, FILE *fp); (3) FILE *fdopen(int filede原创 2016-08-21 11:47:58 · 2316 阅读 · 0 评论 -
Linux网络编程之IO模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回转载 2016-08-21 10:32:18 · 766 阅读 · 0 评论 -
Linux文件描述符(转)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/389652391. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的转载 2016-08-20 21:56:19 · 731 阅读 · 0 评论 -
Linux系统调用接口(转)
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使转载 2016-08-20 21:34:53 · 1010 阅读 · 0 评论 -
Linux的设备
1.字符设备(char device)字符设备是Linux最简单的设备,可以像文件一样访问。初始化字符设备时,它的设备驱动程序向Linux登记,并在字符设备向量表中增加一个device_struct数据结构条目,这个设备的主设备标识符用做这个向量表的索引。一个设备的主设备标识符是固定的。chrdevs向量表中的每一个条目,一个device_struct数据结构,包括两个元素:一个登记设备驱动程转载 2016-08-20 21:20:38 · 636 阅读 · 0 评论 -
Linux系统目录(转)
1、Linux文件系统的层次结构 在Linux或Unix操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。 文件系统的最顶层是由根目录开始的,系统使用”/“来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。 在Linux文件系统中有两个特转载 2016-08-20 21:12:20 · 617 阅读 · 0 评论 -
Linux的文件类型分类
Linux文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。linux文件的删除方式是用rm 命令。Linux文件类型;Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话原创 2016-08-20 20:59:30 · 4328 阅读 · 0 评论 -
Linux的文件系统(转)
linux文件系统简介Linux下一切皆文件 linux的文件系统,主要包括了linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接硬链接、和常见目录的介绍。 如有不对之处请大家多多指出。1.Linux磁盘分区和目录 Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Win转载 2016-08-20 20:47:15 · 902 阅读 · 0 评论