自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (2)
  • 收藏
  • 关注

原创 select、poll、epoll解析

一、select#include <sys/select.h>#include <sys/time.h>int select(int nfds, fd_set *readfds, fd_set *writefds, d_set *exceptfds, struct timeval *timeout);void FD_CLR(int fd, fd_set *s...

2018-07-18 20:09:41 448

原创 exit(), _exit(), return的区别

exit():清理I/0缓存区后再退出进程_exit():直接结束进程进入到内核中return:函数返回,如果返回的是main函数,则为退出程序exit()和_exit()的最大区别是:exit()函数在调用exit系统之前要检查文件的打开情况,把文件缓冲区的内容写回文件。_exit()函数直接将进程关闭,缓冲区的数据将会丢失。"缓冲I/O操作":对每一个打开的文件,在内存中都有一片缓冲区,每次读...

2018-07-15 22:44:14 273

原创 linux 进程地址空间分布

在32位操作系统中,内存空间拥有4GB的寻址能力。操作系统会把高地址的空间分配给内核,称为内核空间。(1)内核空间:默认情况下,Windows将高地址的2GB空间分配给内核,Linux将高地址的1GB空间分配给内核。剩下的2GB或3GB的内存空间称为用户空间。在用户空间里,有许多地址区间有特殊的地位,一般来讲,应用程序使用的内存空间里有如下"默认"的区域。(2)栈:用于维护函数调用的上下文。栈通常...

2018-07-15 22:43:00 3201

原创 标准库函数和系统调用的区别

一、标准库函数和系统调用的区别函数库调用:与用户程序相联系,在用户地址空间执行,属于过程调用,调用开销较小。系统调用:是操作系统的一个入口点,在内核地址空间执行,需要在用户空间和内核上下文环境间切换,开销较大。一般没有    库函数对文件的操作实际上是通过系统调用来实现的,因此使用库函数也有系统调用的开销。为什么不直接使用系统调用呢?因为读写文件通常是大量的数据(相对于底层驱动的系统调用所实现的数...

2018-07-15 22:39:04 1824

原创 列出常见的信号,信号怎么处理?

1、常见的信号信号(signal)是很短的信息,可以被发送到一个进程或一组进程,发送给进程的唯一信息通常是一个数,以此来表示信号。信号的两个主要目的:让进程知道已经发生了一个特定的事件;强迫进程执行它自己代码中的信号处理程序。$ kill -l 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP 6) SIGABR...

2018-07-15 22:37:01 2183

原创 进程、线程、多进程、多线程

一、进程和线程的区别(1)进程:资源分配的最小单位;线程:程序执行的最小单位(CPU调度和分派的基本单位)。(2)进程有独立的地址空间,每个进程都有自己的数据段、代码段和堆栈段;线程没有单独的地址空间,它包含独立的栈和CPU寄存器(同一进程内的线程共享进程的地址空间)。(3)一个进程崩溃后,在保护模式下不会对其它进程产生影响;一个线程死掉就等于整个进程死掉。(4)进程之间的通信只能通过进程通信的方...

2018-07-15 22:34:35 433

原创 如何定位内存泄漏

常见的内存错误:(1)内存分配未成功,却使用了它(2)内存分配成功,但尚未初始化就引用它(3)内存分配成功且初始化,但操作越过了内存的边界(4)忘记释放内存,造成内存泄漏(5)释放了内存却继续使用它以发生的方式来分类:(1)常发性内存泄漏,发生内存泄漏的代码会被多次执行到,每次执行都会导致一块内存泄漏(2)偶发性内存泄漏(3)一次性内存泄漏,发送泄漏的代码只会被执行一次(4)隐式内存泄漏,程序在运...

2018-07-15 22:24:00 12828

原创 写一个C程序判断系统是32或64位、大端或小端字节序

一、判断系统是32位或64位32位处理器一次只能处理32位,也就是4个字节的数据,虚拟地址空间的最大值是4G。64位处理器一次能处理64位,也就是8个字节的数据,虚拟地址空间的最大值是16T。32位处理器:系统指针(32位 ),long(32位),int(32位),short(16位)64位处理器:系统指针(64位 ),long(64位),int(32位),short(16位)#include &...

2018-07-15 22:10:31 3984

原创 IO:阻塞、非阻塞、同步、异步

Network I/O:阻塞(blocking)、非阻塞(nonblocking)、同步(synchronous)、异步(asynchronous)I/O涉及到两个系统对象:(1)调用I/O的process(thread),(2)系统内核(kernel)。I/O操作发生时经历两个阶段:(1)等待数据ready,(2)将数据从内核拷贝到进程中。# 阻塞IO当用户进程调用了recvfrom这个系统调用...

2018-07-11 12:25:06 266

more effective c++

译序(侯捷) more effective c++ 编程语言 非常好的改善编程技术的

2018-05-27

strace mv A B

本附件是执行strace mv A B打印出的调用栈

2017-03-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除