apue
文章平均质量分 66
apue 学习笔记
东阳z
从大数据到深度学习到C++到Java
展开
-
apue-信号2——可重入函数和中断函数
阻塞函数一些系统调用可能会阻塞相当长的一段时间(或永远阻塞),例如以下这些:• read(2) from files that can block (pipes, networks, terminals)• write(2) to the same sort of files• open(2) of a device that waits until a condition occurs (for example, a modem)• pause(3), which purposefully pu原创 2021-03-23 15:29:07 · 109 阅读 · 0 评论 -
apue-信号1
概念信号提供了一种处理异步事件的方法.例如,终端用户键入 CTRL + C,会通过信号机制停止一个程序,或通过管道终止管道中的下一个程序。信号的定义在 <signal.h> 中,被定义为正整数常量。信号可以由以下几种方式产生:‘终端硬件异常某种软件状态产生kill函数#include <signal.h>int kill(pid_t pid, int sig);pid: 进程ID, sig: 信号kill的pid参数有以下4中不同的情况:pid >原创 2021-03-23 15:01:05 · 98 阅读 · 0 评论 -
UNIX 进程用户标识
与一个进程相关联的 ID 有6个或更多,如下图所示其中:实际用户ID 和实际组 ID 标识我们究竟是谁。这两个字段在登陆时取自口令文件中的登陆项。通常,在一个登陆会话期间这些值并不改变,但是超级用户进程有办法改变他们。有效用户id、有效组id 以及附属组 ID 决定了我们文件的访问权限保存的设置用户ID 和 保存的设置组ID在执行一个程序时包含了有效用户ID 和 有效组 ID 的副本。在执行一个程序文件时,进程的有效用户id通常就是实际用户id,有效组ID通常就是实际组ID ,但是可以通过设原创 2021-03-23 12:40:23 · 178 阅读 · 1 评论 -
二进制 I/O、定位流、格式化I/O、内存流
东阳的学习笔记一、二进制 I/O如果进行二进制 I/O 操作,那么我们更愿意一次读或写一个完整的结构。如果使用 getc 或 putc 读写一个结构,那么必须循环通过整个结构,每次循环处理一个字节,一次读或者写一个字节,这太麻烦了如果使用 fgets 和 fputs,那么因为 fputs 在遇到 null 字节时停止,而在结构中可能含有 null 字节#include <stdio.h>size_t fread(void *restrict ptr, size_t size.原创 2021-03-05 11:56:57 · 268 阅读 · 1 评论 -
标准IO的效率
对于这3个标准 I/O 版本中的每一个,其用户CPU时间都大于 图3-6 的最佳 read 版本,因为在每次读一个字符的标准 I/O 版本中有一个要执行 1 亿次循环,而在每次读一行的版本中有一个要执行 3144984 次的循环。在 read 版本中,其循环只需执行 25224 次(对于缓冲区长度为 4096 字节)。因为系统的CPU时间几乎相同,所以用户CPU时间的差别以及等待 I/O 结束所消耗时间的差别造成了时钟时间的差别。系统 CPU 时间几乎相同,原因是因为所有这些程序对内核提出的读、写请.原创 2021-03-04 21:06:00 · 329 阅读 · 1 评论 -
APUE-读和写流
东阳的学习笔记1. 输入函数一但打开了流,则可在3种不同类型的非格式化I/O中进行选择,对其进行读、写操作。每次一个字节的I/O,一次读或者写一个字符,如果流是带缓冲的,则标准I/O流处理所有缓冲每次一行的I/O。如果想要一次读或者写一行,则使用 fgets 和 fputs 。没行都以一个换行符终止。当调用 fgets 时,应说明能处理的最大行数直接I/O。fread和fwrite函数支持这种类型的I/O。常用于从二进制文件中每次读或者写一个结构在大多数实现中,为每个流在 FILE 对象.原创 2021-03-04 12:46:13 · 198 阅读 · 1 评论 -
文件流
东阳的学习笔记流和FILE对象当打开一个文件时,即返回一个文件描述符,然后该文件描述符就用于后续的IO操作。而对于IO操作,他们的操作是围绕流进行的。对于ASCII字符集,一个字符用一个字节表示。对于国际字符集,一个字符可以用多个字节表示,标准IO文件流可用于单字节和多字节(“宽”)字符集。流的定向决定了所读、写的字符是单字节还是多字节的。当一个流最初被创建时,它并没有定向。如果在未定向的流上使用一个多字节 I/O 函数,则设置流的定向为宽定向的若在未定向的流上使用一个单字节的I/O函数,.原创 2021-03-03 22:13:22 · 130 阅读 · 1 评论 -
APUE-缓冲
东阳的学习笔记标准 IO 库提供缓冲的目的是尽可能减少 read 和 write 的调用次数。它也对每个IO流自动地进行缓冲管理。标准I/O提供了以下三种缓冲:全缓冲:直到缓冲区被填满,才调用系统I/O函数。对于读操作来说,直到读入的内容的字节数等于缓冲区大小或者文件已经到达结尾,才进行实际的I/O操作, 将外存文件内容读入缓冲区;对于写操作来说,直到缓冲区被填满,才进行实际的I/O操作,缓冲区内容写到外存文件中。对于在磁盘驻留的文件通常是全缓冲的。行缓冲:直到遇到换行符’\n’,才调用.原创 2021-03-03 21:37:30 · 94 阅读 · 1 评论 -
Linux上用不同缓冲长度进行读操作的时间结果
下图在linux ext4 文件系统(其磁盘块长度为 4096字节)上不同缓冲区长度对读操作的时间的影响。这也证明了在下图中系统CPU的几个最小值差不多出现在 BUFFSIZE 为 4096 及以后的位置,继续增加缓冲区长度对此时间几乎没有影响。大多数文件系统为了改善性能都采用了某种预读技术。当检测到正在顺序读取时,系统就试图读入比应用所要求的更多数据,并假想应用很快就会读这些数据,预读的效果(时钟时间)见上图,缓冲区长度小至32字节时的时钟时间与拥有较大缓冲区长度的时钟时间几乎一样。...原创 2021-03-03 17:31:40 · 205 阅读 · 1 评论 -
muduo库学习之常用编程模型04——常用编程模型与进程间通信方式的选择
东阳的学习笔记文章目录1. 单线程服务器常用地编程模型2. 典型的多线程服务器的线程模型One loop per thread线程池归纳3. 进程间通信与线程间通信进程间通信原文链接:https://blog.csdn.net/yuyin86/article/details/70864241. 单线程服务器常用地编程模型常用的单线程编程模型见https://blog.csdn.net/qq_22473333/article/details/112910686在高性能的网络程序中,使用得.转载 2021-02-01 14:04:51 · 393 阅读 · 0 评论 -
muduo库学习之适用场合和常用编程模型02——线程
原文链接:https://blog.csdn.net/zhoucheng05_13/article/details/976121351 线程创建创建一个线程,并在主线程和子线程中打印进程id、线程id。实例代码#include "apue.h"#include<pthread.h>pthread_t tdno;//打印进程id、线程idvoid printids(const char* s){ pid_t pid; pthread_t tid; .转载 2021-02-01 11:59:40 · 137 阅读 · 0 评论 -
muduo库学习之适用场合和常用编程模型01——fork函数(多进程)
东阳的学习笔记原创 2021-02-01 11:24:24 · 165 阅读 · 0 评论 -
UNIX环境高级编程-umask屏蔽字
原文链接:APUE编程:35—文件目录(文件权限屏蔽字函数:umask)一、umask函数#include <sys/stat.h>mode_t umask(mode_t cmask);//返回值:返回之前文件模式创建的屏蔽字//此函数是少数不会出错的函数之一功能:如果程序创建文件,则使用此函数来限制文件的访问权限,此函数设置的常量不会被设置到创建的文件的权限中去注意事项:程序调用此函数并不会影响到系统的umask属性cmask参数:此参数可以为下面的9个常量的按位或构成二、演转载 2020-12-23 16:56:55 · 119 阅读 · 0 评论 -
转载:UNIX环境高级编程,apue.h的设置
请看原文https://blog.csdn.net/qq_41899773/article/details/107376991一、下载源码二、解压这个文件tar -zxvf src.tar.gz解压后文件会放在apue.2e目录下,这个目录里包含了书本上的源码,也包含了apue.h和error.c文件。三、复制apue.h到/usr/include/下cp ./apue.2e/include/apue.h /usr/include/此时/usr/include/下没有apue.h文件,直.转载 2020-12-21 11:45:17 · 146 阅读 · 1 评论