文件I/O 概述:本次讨论的文件IO是无缓冲的IO文件的操作对应的函数有open write lseek read 文件描述符:文件描述符随着文件被创建或打开而产生,又由内核返回给进程,可以作为参数传递给读和写函数文件描述符0对应着标准输入 通常替换 STDIN_FILENO文件描述符1对应着标准输出 通常替换 STDOUT_FILENO文件描述符3对应着标准错误 通常
第一章 unix基础知识 1.1引言所有操作系统都为它所运行的程序提供服务,典型的服务包括执行新程序,代开文件,读文件,分配存储区等1.2unix体系结构操作系统可以视为一种软件,它控制计算机的硬件资源,提供程序运行环境,此即为内核内核的接口称为系统调用,公用函数建立在系统接口之上,应用程序既可以使用公用库函数又可以使用系统调用。其实shell是一种特殊的应用程序,为运行其他程序提供了一个接口。 当然更广泛
K&R之const用法 const用法:const 用于修饰变量,限定该变量的值不能被修改,对于数组而言,const限定符指定的数组所有元素的值都不能改变。const double 2 = 2.71828const char msg[] = "hello";const 限定符也可以配合数组参数使用,他表明函数不能修改数组元素的值int strlen(const char[]);const的例子:
关于指针的定义 指针的定义:1.定义一个整型变量:int a;2.定义一个整型指针:int *a;3.定义一个指向整型变量指针的指针:int * *a;*的运算是自右向左进行的,可以将其看为int *(*a),可以将其分成两部分来看,第一部分是int *是一个指向整形的指针,第二部分是(*a)是一个指针变量,也就是说(*a)是一个指向整型的指针,那么a则是指向指针的指针4.
K&R之宏替换的例子 宏替换的例子:#include #define MAX(A,B) ((A) > (B) ? (A):(B))void max(int a,int b){int c;return c = max(a,b);}int main(){int a=2;int b =8;int c1,c2;c1 = MAX(a++,b++);c2 = max(a++,b+
K&R之指针 指针:机器的一个字节可以存放一个char 类型两个字节存放一个short类型四个字节可以存放一个long类型指针只能指向特定类型的对象,就是说每个指针都必须指向某种类型的数据void类型指针可以指向任何类型的指针*pi += 1;等同于++*pi或(*pi)++;(注意,这里必须带括号,*和++这样的一元运算符遵循从右到左的顺序结合)指针与函数参数
K&R之初始化&宏调用 初始化在不进行显示初始化的情况下,外部变量和静态变量都将被初始化为0,自动变量和寄存器变量的初始值为无用信息对于外部变量的静态变量其初始化表达式必须是常量表达式对于自动变和寄存器变量来说初始化表达式可以不是常量表达式,表达式中可以包含任意在此表达式之前已经定义的值,包括函数调用宏调用:宏替换对在括号中的字符串不起作用如 #define YES 123宏替换对引号中的
K&R寄存器变量 寄存器变量:register声明告诉编译器它所声明的变量放在寄存器中,用于使用频率高的变量,可以使程序更小,执行速度更快如:register int x;register char c;过量的寄存器变量不好无论寄存器变量是存放在寄存器中还是存放在内存中,其地址不能访问寄存器变量的初始化默认为0
K&R 之静态变量static static静态变量只供其所在的源文件使用,其他函数不能使用在某一个函数中声明static变量则只在该函数中有用static修饰的变量,函数即使于自动变量,函数名字相同也不会产生冲突
K&R 之extern extern:extern用于访问外部变量例子:在config.h中int p = 10;char x[10] = "hello" ;在test1.c中#include "config.h"#include int main(){extern p;p++;extern x[];printf("%d,%s",p,x);return 0;
K&R 第二章 类型,运算符 与表达式 类型,运算符,表达式变量名:变量名:由字母和数字组成,——下划线被看作字母,一般下划线用于库例程的开头,所以在自己的程序里面不要用下划线开头。局部变量使用较短的名字,外部变量使用较长的名字数据类型以及长度char intfloatdouble此外还可以加一些限定符 short longshort 至少16位 long至少32位 short不能长于int,
K&R 导论 第一章数值运算:如果某个算数运算符的所有操作都是整型,则执行整型运算。2如果其中一个是浮点型,则在运算前将整型转换成浮点型,然后运算。一般如果定义了一个float 变量,该整型变量是整数,也要写上小数点,便于阅读。打印时字符格式:int a;printf("%3d",a);这样输出的a就占3个字符宽度,一般用于输出时对齐。float a;printf("%3
typedef typedef 用来创建一个新的数据类型tyoedef int Length;将Length定义为与int具有同等意义的名字。类型Length可以用于类型声明,类型转换如:Length len,,axlen;Length ×lengths[];typedef char *string;定义了一个字符型指针类型string,然后可以用string 定义其他变量。typed
unix基础知识 unix体系结构内核:控制计算机的硬件资源,提供程序运行的环境Linux是GNU操作系统的内核操作系统:从光以上来讲,操作系统包括内核以及一些其他软件,这些软件能够使操作系统发挥重要作用,使计算机有自己的独特性内核与外界的接口称为系统调用,公用库函数建立在系统调用之上,应用程序既可以使用系统调用,也可以使用公共库函数。POSIX:POSIX表示可移植
linux网络编程 TCP/IP协议Web客户与服务器之间通过TCP(transmission control protocol)通信.TCP又转而使用IP(internet protocol)通信,IP再通过某种形式的数据链路层通信,如果客户与服务器处于同一个以太网,右下图所示通信层次。客户与服务器之间的信息流在一端是向下通过协议栈的,跨越网络后,在另一端是向上通过协议栈的。当用户和服务器属于不
linux编程中的时间 在linux中的时间有time_t和struct tmtime_t的定义为type long time_ttime_t描述的时间是从1970年1月1日0时0分0秒到获取时间的那一秒的秒数。函数time(NULL)可以获取当前的时间并以time_t的类型返回。time_t 获取到的时间不够直观,为了直观地描述时间,采用了tm结构体的形式,tm结构体的内容为
linux编程之stat函数 stat函数用来获取文件的信息,如文件大小,修改时间等stat函数的返回值是一个结构体其名字为struct statstruct stat { dev_t st_dev;/* 包含这个文件的设备 ID */ ino_t st_ino;/* inode 编号 */ mode_t st_mode;/* 访问权限 */ nlink_t st_n
linux编程之文件系统 linux中的文件系统有EXT2block:ext2文件系统组织文件时是以block为单位组织的,磁盘上一般是以扇区为单位的,一个扇区大小为512B,block是磁盘上的一块区域,大小一般为8个扇区,为4K.inode表:inode表就是一块区域记录着文件信息inode结点的表格inode节点: 图1 ext2全貌 从图1