摘要:
一、从Hello World说起 1、程序为什么要被编译器编译了之后才可以运行? 2、编译器在把C语言程序转换成可以执行的机器码的过程中做了什么?怎么做的? 3、最后编译出来的可执行文件里面是什么?除了机器码还有什么?他们怎么存放的,怎么组织的? 4、#include<stdio.h>是什么意思?把 阅读全文
摘要:
一、进程标识 每个进程都有一个非负整型标识的唯一进程ID。因为进程ID标识符总是唯一的,常将其用做其他标识符的一部分以保证其唯一性。进程ID虽然是唯一的, 但是却是可以复用的。ID为0的进程通常是调度进程,常常被称为交换进程(swapper)。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也 阅读全文
摘要:
一、main函数 C程序总是从main函数开始执行。main函数的原型是: 当内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址 这是由连接编辑器设置的,而连接编辑器则由C编译器调用。 二、进程终止 一共有8种方式进程终止,其中五种为正常终止, 阅读全文
摘要:
十、定位流 对于一个二进制文件,whence可以为SEEK_SET/SEEK_CUR/SEEK_END;对于文本文件,whence只能是SEEK_SET,并且offset只能是:0(后退到文件的起始位置)或是对该文件的ftell所返回的值。使用rewind也可以将一个流设置到文件的起始位置。 十一、 阅读全文
摘要:
六、读和写流 一旦打开了流,则可在3种不同类型的非格式化I/O中进行选择,对其进行读、写操作:1)每次一个字符的I/O,一次读或写一个字符,如果刘时代缓冲的,则标准I/O函数处理所有缓冲;2)每次一行的I/O。如果想要一次读或写一行,则使用fgets和fputs。每行都以一个换行符终止。当调用fge 阅读全文
摘要:
一、引言 标准I/O库不仅是UNIX,许多i其他操作系统都实现了标准I/O库,所以这个库由ISO C标准说明。标准I/O库处理很多细节,如缓冲区分配,以及优化的块长度执行I/O等。这使得它便于用户使用,但是如果我们不能深入了解I/O库函数的操作,也会带来一些问题。 二、流和FILE对象 第三章中所有 阅读全文
摘要:
十三、函数rename和renameat 文件或目录可以用rename函数或者renameat函数进行重命名。有几种情况需要说明: 1、如果oldname指的是一个文件而不是目录,那么为该文件或符号链接重命名。在这种情况下,如果newname已存在,它不能引用一个目录。如果newname已存在,而且 阅读全文
摘要:
七、函数umask umask函数为进程设置文件模式创建屏蔽字,并返回之前的值,这是少数几个没有出错返回函数中的一个。其中cmask是9个常量(S_IR/W/XUSR、S_IR/W/XGRP、S_IR/W/XOTH)中的若干个按位“或”构成的。 4-9 umask函数实例 UNIX系统的大多数用户从 阅读全文
摘要:
一、引言 上一章执行I/O的基本函数(打开文件、读文件和写文件),本章将描述文件系统的其他特征和文件的性质,我们将从stat函数开始,并逐个说明stat结构的每一个成员以了解文件的所有属性。在此过程中,我们将说明修改这些属性的各个函数。 二、函数stat、fstat、fstatat和lstat 若p 阅读全文
摘要:
十二、函数sync、fsync和fdatasync 延迟写:传统的Unix系统在内核中设有缓冲区或页高速缓冲,大多数磁盘I/O都通过缓冲区进行,当我们向文件写入数据时,内核通常先将数据复制到缓冲区,然后排入队列,晚些时候再写入磁盘。Unix系统提供了sync、fsync和fdatasync三个函数。 阅读全文