UNIX环境高级编程
延禾xy
个人学习记录及思考。专注当下,停止焦虑。
展开
-
apue 第5章 标准I/O库
引言标准库I/O库处理很多细节,如缓冲区分配,以优化的块长度执行I/O等流和FILE对象当打开一个文件时,即返回一个文件描述符,然后该文件描述符就用于后续的I/O操作。而对于标准I/O库,它们的操作时围绕流(stream)进行的。流可用于单字节或多字节(“宽”)字符集流的定向(stream`s orientation)决定了所读、写的字符是单字节还是多字节。只有两个函数可以改变流的定向。fr原创 2016-09-08 21:07:00 · 816 阅读 · 0 评论 -
apue 第15章 进程间通信
引言进程间相互通信的其他技术-进程间通信管道FIFO消息队列信号量共享内存POSIX信号量管道什么是管道统操作执行命令的时候,经常有需求要将一个程序的输出交给另一个程序进行处理,这种操作可以使用输入输出重定向加文件。如下面的命令:ubuntu@VM-188-113-ubuntu:~$ ls -l /etc/ > etc.txtubuntu@VM-188-113-ubuntu:~$ w原创 2016-11-12 11:07:49 · 697 阅读 · 0 评论 -
apue 第14章 高级I/O
1、引言2、非阻塞I/O系统调用分为两类:低速系统调用和其他。 低速系统调用是可以使进程永远阻塞的一类系统调用如果某些文件类型(读管道、终端设备和网络设备)的数据并不存在,读操作可能会使调用者永远阻塞 如果数据不能被相同的文件类型立即接受(管道中无空间、网络流控制)。写操作可能会使调用者永远阻塞 在某种条件发生之前打开某些文件类型可能会发生阻塞 对已经加上强制性记录锁的文件进行写 某些i原创 2016-11-12 11:07:24 · 2743 阅读 · 0 评论 -
apue 第13章 守护进程
转载:http://www.cnblogs.com/mickole/p/3188321.html1.守护进程概述守护进程是生存期长的一种进程,在系统引导时启动,系统关闭时才终止。Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux转载 2016-11-12 11:06:51 · 538 阅读 · 0 评论 -
apue 第12章 线程控制
1、引言2、线程限制PTHREAD_DESTRUCTOR_ITERATIONS 线程退出时,操作系统试图销毁线程特定数据的最大次数PTHREAD_KEYS_MAX 进程可以创建的最大的键的数目PTHREAD_STATC_MIN 一个线程的栈可用的最小字节书目PTHREAD_THREADS_MAX 进程可以创建的最大线程数3、线程属性pthread的属性函数遵循以下的模式:每个对象与一个他原创 2016-11-12 11:06:18 · 492 阅读 · 0 评论 -
apue 第8章 进程控制
引言创建新进程,执行程序和进程终止进程属性的ID:实际、有效和保存的用户ID和组ID以及它们如何受到控制原语控制的解释器文件和system函数进程会计进程标识每个进程都有一个非负整型表示的唯一进程ID。因为进程ID标识符总是唯一的,常将其用作其他标识符的一部分以保证其唯一性。进程ID可复用:当一个进程终止后,其进程ID就称为复用的候选者。大多数UNIX系统实现延迟复用算法,新进程的ID原创 2016-11-12 11:05:23 · 640 阅读 · 0 评论 -
apue 第4章 文件和目录
函数stat,fstat,fstatat, lstat#include <sys/stat.h>int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int fd, struct stat *buf);int lstat(const char *restrict pathname, struct原创 2016-09-07 20:11:45 · 2005 阅读 · 0 评论 -
apue 第3章 文件I/O
文件I/O的主要有五个常用的函数:openreadwritelseekclose本章主要介绍不带缓存的I/O文件描述符对于内核而言,所有打开的文件都是通过文件描述符引用的。文件描述符0-标准输入,1-标准输出,2-标准错误。在POSIX规范中,已经提供了STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO来替代0、1、2数字,这样更加便于开发者理解函数open原创 2016-09-07 20:11:07 · 741 阅读 · 0 评论 -
apue 第1章 UNIX 基础知识
0 环境配置下载:到官网 http://www.apuebook.com/code3e.html 下载 ‘src.3e.tar.gz’解压:$ tar -zvx -f src.3e.tar.gz安装libbsd:$ sudo apt-get install libbsd-dev进入apue.3e $ make将/apue.3e/include/apue.h文件拷贝到/usr/includ原创 2016-09-07 20:10:08 · 475 阅读 · 0 评论 -
apue 第9章 进程关系
引言终端登陆首先看看终端登录过程,这个过程是BSD的,但是Linux基本相同:管理员创建/etc/ttys文件,每个终端设备有一行表明设备名和getty启动参数。系统自举创建init进程,init进程读取/etc/ttys文件,对每个终端fork并且exec gettty.getty打开终端设备,这样就映射到了文件描述符0,1,2.然后初始化环境,exec login.login基本功能就是原创 2016-11-12 11:02:23 · 583 阅读 · 0 评论 -
apue第10章 信号
1、引言什么是信号:在计算机科学中,信号(英语:Signals)是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。2、信号在头文件<signal.h原创 2016-10-17 22:14:52 · 762 阅读 · 0 评论 -
apue第11章 线程
1、引言2、线程概念即使在单核处理器上,由于某些线程阻塞时另外一些线程也可以运行,所以多线程还是可以改善响应时间和吞吐量的每个线程都有线程id,一组寄存器值,栈,调度优先级和策略,信号屏蔽字,errno变量以及线程私有数据。一个进程的所有信息对该线程都是共享的:程序的代码,程序的全局内存和堆内存, 栈以及文件描述符。3、线程标志线程标志为线程ID,但是该id是一个结构体,只在它所属的进程上原创 2016-10-22 21:45:10 · 719 阅读 · 0 评论 -
apue 第7章 进程环境
main函数C程序总是从main函数开始执行。main函数的原型是: int main(int argc, char *argv[]);其中,argc是命令行参数的数目,argv是指向参数的各个指针所构成的数组。当内核执行C程序时,在调用main之前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址——这是由链接编辑器设置的,而连接编辑器则由C编译器调用。启动例程从内核取得命令原创 2016-10-31 21:37:19 · 637 阅读 · 0 评论