
linux编程手册读书笔记
文章平均质量分 92
浪子荆
致力于音视频的编码,解码,传输等。
展开
-
Linux系统编程五(第5章)
Linux系统编程手册原创 2017-01-24 17:45:31 · 291 阅读 · 0 评论 -
互斥锁-条件变量-信号量总结
互斥锁:mutex 条件变量:condition: pthread_cond_signal() :保证唤醒一个线程的wait pthread_cond_broadcast() : 唤醒所有线程的wait pthread_cond_wait() : 等待条件变量的signal or broadcast。 条件变量不保存状态信息,signal时如果没有线程在等待,则会丢失该signal,如果原创 2017-08-31 09:29:55 · 2012 阅读 · 1 评论 -
Linux多线程并发总结
总结thread async future等并发的技术原创 2017-09-04 20:18:39 · 3834 阅读 · 0 评论 -
linux系统编程第10章-时间
0.时间定义: 真实时间:度量真实时间的起点有两种,一为某个标准点,称为日历时间(calendar),比如UTC时间。二为进程周期的某个固定点,一般为程序启动的时间点,称为流逝时间(elapse)或者墙上时间(wall clock)。 进程时间:一个进程所使用的cpu时间总量。 1.日历时间: 系统调用gettimeofday()可以获取日历时间。#include<sys/time.h>i原创 2017-04-05 22:48:53 · 328 阅读 · 0 评论 -
Linux系统编程第14章-系统编程概念
1.设备文件: Linux系统中每个设备都有设备驱动程序,是内核的一部分。由驱动程序提供的api是固定的,一般都包括open,close,read,write,mmap,ioctl等,这样可以保证IO借口的通用性。IOCTL可以提供对特定设备的特定操作,可以自己定义ioctl命令,来实现对设备的特殊操作。不管是真实的设备还是虚拟的设备,都有一样的设备驱动程序。设备驱动程序可以分为两类:字符型设备基原创 2017-04-16 14:21:55 · 276 阅读 · 0 评论 -
Linux系统编程手册第9章-进程凭证
1.各个进程的各种ID,称为进程凭证。如UID,GID等。具体有实际用户ID(real user ID), 实际组ID(real group ID),有效用户ID(effective user ID),有效组ID(effective group ID),保存的set-user-ID和set-group-ID,文件系统用户ID和文件系统组ID,辅助组ID。 2.实际用户id和实际组id: 这两个I原创 2017-04-04 15:28:20 · 429 阅读 · 0 评论 -
linux编程手册第8章用户和组
1.密码文件:/etc/passwd 该文件保存了各个用户的一些信息,按顺序包括:登录名,经过加密的密码,用户ID(UID),组ID(GID),注释,主目录,登陆shell,用冒号分隔。 登陆名:登陆系统时,输入的唯一登陆名。 经过加密的密码:该字段包含的是经过加密处理的密码,长度为13个字节。如果启用了shadow密码(常规做法),则该字段一般为x,真正的加密密码存放在/etc/shadow原创 2017-03-31 23:18:02 · 344 阅读 · 0 评论 -
Linux系统编程手册一 :Linux系统基本概念。
1.hard link与soft link : hard link:硬链接,也叫正式链接,普通链接,原创 2016-11-01 20:03:25 · 689 阅读 · 0 评论 -
Linux/Unix系统编程手册二:系统编程概念
系统调用: a.系统调用会将处理器从用户态切换到核心态。以便cpu访问到受保护的内核内存。 b.一般系统调用会有一个c语言外壳函数,便于用户使用。一般linux使用的外壳函数为glibc。外壳函数会帮助用户执行一系列系统调用的步骤,复制参数到指定的寄存器,执行中断机器指令(int 0x80),根据系统调用的返回值设置errno的值。 c.在Linux一般惯例中,系统调用调用失败一般返回一个负值原创 2016-11-24 18:50:05 · 438 阅读 · 0 评论 -
Linux 系统编程手册第7章-内存分配
1.在堆上分配内存: a.所谓堆,是一段长度可变的连续虚拟内存。开始于进程未初始化数据段末尾。通常将堆的当前边界称为program break。系统提供两个函数来调整program break,#inclue<unistd.h>int brk(void *end_data_segment); //return 0 success, -1 error brk函数调整program break为en原创 2017-03-29 23:07:37 · 524 阅读 · 0 评论 -
Linux系统编程第13章-文件I/O缓冲
1.对于IO,内核会维持一个缓冲,当调用read或者write系统调用时,不是直接写入磁盘或者从磁盘读取,而是先写入内核缓冲区,或者从内核缓冲区读取,内核会找合适的时机将缓冲区的数据写入磁盘。这样就可以减少磁盘操作,实现系统调用的快速返回。 2.stdio库的缓冲: 标准C语言的IO函数库stdio在user space提供了一个cache,用来减少系统调用的次数。当调用stdio的函数库比如f原创 2017-04-09 23:09:23 · 344 阅读 · 0 评论 -
Linux系统编程第12章-系统和进程信息
1.本章介绍通过/proc文件系统获取系统和进程的一些信息。还介绍了uname()系统调用,用于获取各种系统标识。 2./proc文件系统: Linux系统提供了/proc虚拟文件系统,用来给用户层提供系统内核和进程的一些信息,并提供普通文件的IO访问方式。该虚拟文件系统不是存储在硬盘上,而是随程序的运行自动创建和消除的虚拟文件。 a./proc/PID目录 对于系统中的每个进程,都提供了相原创 2017-04-08 21:37:05 · 370 阅读 · 0 评论 -
Linux系统编程第11章-系统限制和选项
1.Linux系统会有各种资源的限制,比如说一个进程能同时打开多少文件等,编程的时候需要注意不能超出这些限制。本章就讨论系统提供的一些系统调用,来获取各种资源的限制。三个系统调用为: sysconf(),pathconf(), fpathconf(),还有一些资源变量的最大值定义在limit.h头文件中。 2.sysconf()函数的用法在P174.可以在程序中调用该系统调用获取资源的限制值。#原创 2017-04-08 20:54:17 · 313 阅读 · 0 评论 -
Linux系统编程手册-进程-6章
1.进程是由内核定义的抽象的实体,该实体分配用以执行程序的各种资源。 2.每个进程都有一个进程号pid。有些系统调用可以使用pid作为输入参数,比如kill()系统调用,允许调用者向某一个特定进程发送信号。头函数unistd.h中 pid_t getpid(void)可以返回该进程的pid。 3.每个进程都有一个父进程号ppid。unistd.h中pid_t getppid(void)可以得到父原创 2017-03-21 23:15:32 · 295 阅读 · 0 评论 -
Linux的I/0模型
1.针对每个进程,文件描述符都自成一套。也就是fd不能跨进程使用。 2. stdin 0, stdout 1, stderr 2 shell 自动打开这三个fd。原创 2016-11-29 11:06:31 · 255 阅读 · 0 评论