本文是笔者拜读《UNIX环境高级编程》第3章(文件I/O)的学习笔记。本文的主要内容是I/O效率、文件共享和原子操作,文中不仅包含书中的知识点,也包括笔者的理解。
I/O效率
度量进程的时间:
时钟
时间。进程的时间总量,和系统中同时运行的进程数有关。
系统CPU
时间。简称系统时间,进程运行在内核态的时间。
用户CPU
时间。简称用户时间,进程运行在用户态的时间。
系统CPU时间和用户CPU时间之和为CPU时间
。
使用read
和write
系统调用拷贝文件:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define N 32
int main() {
char buf[N];
int wNum;
int rNum;
while ((rNum = read(STDIN_FILENO, buf, N)) > 0) {
if ((wNum = write(STDOUT_FILENO, buf, rNum)) != rNum) {
perror("write error");
return -1;
}
}
if (rNum == -1) {
perror("read error");
}
return 0;
}
该进程将copy.c
中的数据拷贝到了t.txt
中,由shell
安排好标准输入、输出,支持用户使用<
和>
对