1: 系统调用:打开一个文件函数原型:int open(const char pathname, info flage, /* mdode_t m) 头文件:#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>参数:flag1> 下面三个常量只能选用一个:O_RDONLY, O_WRONLY, O_RDWR2> O_CREAT :如果文件不存在,则创建此文件,选用个参数时,必须同时指定mode参数3> O_SYNC :最严格的同步方式,每次write操作在数据和属性都协议时再返回2:系统调用:改变文件的所有者1> 函数原型:int chown(cont char *path, uid_t uid, gid_t gid) ;int fchown(int fd, uid_t uid, gid_t gid) ;int lchown(int fd, uid_t uid, gid_t gid) ;2> 头文件:#include <unistd.h>#include <sys/types.h>3> 参数:略4> 返回值:略3:系统调用:创建连接1> 函数原型:int link(const char *existPath, const char *newPath) ;2> 头文件:#include <unistd.h>3> 参数:existpath :已经存在的文件newpath :新的文件4> 返回值:略 4:系统调用:删除一个文件5> 备注:如果newpath已经存在,则失败4:系统调用:删除一个文件1> 函数原型:int unlink(const char *path) ;2> 头文件:#include <unistd.h>3> 参数:略4> 返回值:略5> 备注:调用的函数的结果是使得文件的inode-1,如果i_node=0则自动删除文件数据区5:标准函数:重命令函数1> 函数原型:int rename(const char *oldname, const char *newname) ;2> 头文件:#include <stdio.h>3> 参数:略4> 返回值:略6:系统调用:读连接文件内容函数1> 函数原型:int readlink(const char *path, char *buf, int size)2> 头文件:#include <unistd.h>3> 参数:略4> 返回值:略7:系统调用:新建一个目录1> 函数原型:int mkdir(const char *pathname, mode_t mode) ;2> 头文件:#include <sys/types.h>#include <sys/stat.h>3> 参数:略4> 返回值:略8:系统调用:删除一个空目录1> 函数原型:int rmdir(const char *pathname) ;2> 头文件:#include <unistd.h>3> 参数:略4> 返回值:略9:其他函数:得到文件名最大长度函数1> 函数原型:int pathconf(const char *relativePath, int parameters) ;2> 头文件:#include <limits.h>3> 参数:reletivePath :相对路径,一般取‘/’parameters :=_PC_PATH_MAX4> 返回值:返回本系统支持的最大文件名称长度10:系统调用:改变当前工作目录函数1> 函数原型:int chdir(cont char *pathname) ;2> 头文件:#include <unistd.h>3> 参数:略4> 返回值:略11:系统调用:得到的当前工作目录函数1> 函数原型:char* getcwd(char *buf, int size) ;2> 头文件:#include <unistd.h>3> 参数:buf :存放路径名的首地址size :指出存储空间的字节数4> 返回值:返回当前路径的完整名称12:系统调用:同步函数(两个)1> 函数原型:void sync(void) ;int fsync(int fd) ;2> 头文件:#include <unistd.h>3> 参数:fd :特定的文件描述符4> 返回值:fsync函数只有等到真正写到文件中才返回5> 备注:1> sync函数只是将修改过的块写入队列2> fsync对单个文件操作,写完才返回,应用于数据库中13:特别函数:查询某一个特定用户是否存在1> 函数原型:passwd* getpwuid(uid_t uid) ;passwd* getpwnam(const char *name) ;2> 头文件:#include <sys/types.h>#include <pwd.h>3> 参数:略4> 返回值:返回一个struct passwd指针5> 备注:可以根据一个用户的uid和name来获得这个用户的信息14:特别函数:查询所有的用户信息1> 函数原型:void setpwent() ;passwd* getpwent() ;void endpwent() ;2> 头文件:#include <pwd.h>3> 参数:略4> 返回值:略5> 备注:1> 可以用循环结构来处理2> 开始前最好先要setpwent(),最后一定要endpwent()15:特别函数:查看组用户的函数同上 getgrgid(), getgrnam(), setgrent(), getgrent(), endgrent() ;16:特别函数:查看主机信息1> 函数原型:int uname(struct utsname *name) ;2> 头文件:#include <utsname.h>3> 参数:把获得的东西存入struct utsname中4> 返回值:略17:特别函数: 获得主机名称1> 函数原型:int gethostname(char *buf, int size) ;2> 头文件:#include <unistd.h>3> 参数:略4> 返回值:略18:时间函数:得到当前时间1> 函数原型:time_t time(time_t *buf) ;2> 头文件: #include <time.h>3> 参数:buf :把得到的time_t值存入tm数据结构4> 返回值:返回日历时间time_t5> 备注:日历时间是一个秒数19:特别函数:time_t和tm数据结构之间的转换1> 函数原型:time_t mktime(tm *buf) ;struct tm* gmtime(const time_t *ptr) ;2> 头文件:#include <time.h>3> 参数:略4> 返回值:略20:特别函数:转化可视时间1> 函数原型:char* asctime(const struct tm *ptr) ;char* ctime(const time_t *t) ;2> 头文件:#include <time.h>3> 参数:略4> 返回值:略21:特别函数:退出程序1> 函数原型:void exit(int status) ;void _exit(int status) ;2> 头文件:exit --> #include <stdio.h>_exit --> #include <unistd.h>3> 参数:略4> 返回值:略5> 备注:1> exit :退出时对每个文件流都进行fclose操作2> _exit:退出,直接进入内核22:特别函数:注册函数1> 函数原型:int atexit( void (fun*)(void) ) ;2> 头文件:#include <stdlib.h>3> 参数:void (fun*) (void)4> 返回值:略5> 备注:1> 函数的参数是返回值void,参数void的函数2> 先注册的后执行,后注册的先执行23:特别函数:和内存分配相关的四个函数1> 函数原型:void* malloc(size_t size) ;void* calloc(size_t nobj, size_t size) ;void* realloc(void *ptr, size_t newsize) ;void free(void *ptr) ;2> 头文件:#include <stdio.h>3> 参数:在realloc中,newsize指的是新的空间的大小4> 返回值:略5> 备注:1> realloc函数中,newsize指的是新的要申请空间的大小2> calloc和malloc的区别是后者申请完空间后,会初始化24:特别函数:环境变量的相关操作1> 函数原型:char* getenv(const char *name) ;int putenv(const char *str) ;int setenv(const char *name, const char *value, int rewrite) ;unsetenv(const char *name) ;2> 头文件:#include <stdlib.h>3> 参数:1> rewrite != 1,现删除原来的变量2> rewrite ==1,不删除现存定义4> 返回值:略25:特殊函数:保存环境函数1> 函数原型:int setjmp(jmp_buf buffer) ;void longjmp(jmp_buf buffer, int flag) ;2> 头文件:#include <setjmp.h>3> 参数:略4> 返回值:略5> 备注:1> 现利用setjmp保存一个状态2> 利用longjmp恢复保存的状态1: 系统调用:读一个文件函数原型:ssize_t read(int fd, void *buf, size_t size) ;头文件:#include <unistd.h>参数:略返回值:1> < 0 :出现I/O错误2> = 0 :达到文件结尾3> > 0 :返回读到的实际字节数备注:略2:系统调用:写入一个文件函数原型:ssize_t write(int fd, void *buf, size_t size) ;头文件:#include <unistd.h>参数:略返回值:1> < 0 :出现I/O错误2> > 0 :返回写入的实际字节数目----------------------------------注意:当返回值不等于size时,则出现I/O错误备注:略3:系统调用:返回本进程的ID函数原型:pid_t getpid() ;头文件:#include <unistd.h>参数:无返回值:1> > 0 :返回本进程ID2> < 0 :出现错误备注:无4:系统调用:返回本进程的组ID函数原型:gid_t getgid() ;头文件:#include <unistd.h>参数:无返回值:1> < 0 :出现错误2> > 0 :返回组ID5:系统调用:复制一个文件描述符(一个参数)函数原型:int dup(int fd) ;头文件:#include <unistd.h>参数:略返回值:1> < 0 :出现错误2> >= 0 :返回一个文件描述符备注:此函数的结果就是两个文件符指向一个相同的文件6:系统调用:复制一个文件描述符(两个参数)函数原型:int dup(int fd1, int fd2) ;头文件:#include <unistd.h>参数:fd1 :已知的fdfd2 :要复制到的fd返回值:1> <0 :出现错误2> >=0 :调用成功备注:此函数的分成三种情况:1>若fd2已经打开,且fd2 != fd1,则先将fd2关闭2>若fd2已经打开,且fd2 == fd1,则直接返回3>若fd2没有打开,则直接复制7:系统调用:获取文件属性的三个函数函数原型:int stat(const char *pathname, stat *buf) ;int fstat(int fd, stat *buf) ;int lstat(int fd, stat *buf) ;头文件:#include <sys/types.h>#include <sys/stat.h>参数:略返回值:如果返回负数,则调用失败备注:当操作的文件是一个链接文件时1>stat和fstat返回的是链接指向文件的属性2>lstat返回的是链接文件本身的属性8:系统调用:判断文件类型的几个宏(Question:参数)头文件:(Question)普通文件:S_ISREG()目录文件:S_ISDIR()链接文件:S_ISLNK()块设备:S_ISBLK()字符设备:S_ISCHR()管道:S_ISFIFO()SOCKET :S_ISSOCK()9:系统调用:测试文件存取模式函数原型:int access(const char *pathname, int mode)头文件:#include <unistd.h>#include <fcntl.h>#include <sys/types.h>参数:mode的取值情况:---------------1> 存在:F_OK (文件是否存在)2> 可读:R_OK3> 可写:W_OK4> 执行:X_OK返回值:如果失败,返回一个负数备注:10:系统命令:置位设置-用户-ID位chmod u+s file11:系统结构:文件存储权限字S_ISUID 设置-用户-IDS_ISGID 用户-组 -IDS_ISIVX 粘住位S_IRUSR 用户相关S_IWUSRS_IXUSRS_IRGRP 组相关S_IWGRPS_IXGRPS_IROTH 其他用户相关S_IWOTHS_IXOTH12:系统函数:屏蔽标记函数函数原型:mode_t umask(mode_t masks) ;头文件:#include <unistd.h>参数:要屏蔽的存储方式字(mode_t)返回值:返回原来的屏蔽方式字备注:1>此函数如果出错,则不会返回2>这是UNIX中出错不会返回的仅有的几个函数之一13:系统调用:改变文件存取模式函数原型:int chmod(const char *pathname, mode_t mode) ;int fchmode(int fd, mode_t mode) ;头文件:#include <unistd.h>#include <sys/types.h>参数:略返回值:如果出错,则返回一个负数备注:fchmod可以设置一个已经打开文件的存储访问权限14:系统调用:截短文件的函数函数原型:int truncate(const char *pathname, off_t length) ;int ftruncate(int fd, off_t length) ;头文件:#include <unistd.h>#include <sys/types.h>参数:off_t (截短到该长度)返回值:如果失败,则返回一个负数备注:1>length可正可负2>可能出现“文件空洞”15:标准函数:设置流的缓冲类型函数原型:int setvbuf(FILE *fstream, void *buf, int mode, size_t size 头文件:#include <stdio.h>参数:buf :if buf==NULL,则由系统来分配缓存,叫做系统缓存if buf!=NULL,则来使用分配的缓存,叫做用户缓存size:分配的用户缓存大小mode:_IOFBF :I/O全缓存_IOLBF :I/O行缓存_IONBF :I/O不缓存参数:如果失败,则返回一个负数16:标准函数:缓冲流函数原型:int fflush(FILE *fstream) ;头文件:#include <stdio.h>参数:if fstream == NULL,则强制刷新全部流if fstream != NULL,则刷新特定流返回值:如果失败,则返回一个负数17:标准函数:打开文件的三个函数函数原型:FILE* fopen(const char *pathname, char *mode) ;FILE* fropen(const char *pathname, char *mode) ;FILE* fdopen(int fd, char *mode) ;头文件: #include <stdio.h>参数:略返回值:略备注:1> fopen :路径 FILE*2> fropen :重新打开一个文件3> fdopen :把FILE* 和一个fd联系起来I/O的几种type类型1> r :为读而打开2> r+ :为读和写而打开3> w :使文件长度称为0,或者为写而创建文件4> w+ :使文件长度成为0,为读和写而打开5> a :添加,为在文件尾写而打开或者为了写而创建文件6> a+ :为在文件尾读和写而打开或创建19:标准函数:关闭一个文件流函数原型:int fclose(FILE* fstream) ;头文件:#include <stdio.h>参数:略返回值:如果出错,返回一个负数备注:系统在关闭一个文件时,会自动刷新该文件相关的流1> 输入数据:全部被抛弃2> 输出数据:全部被刷新20:标准函数:读取一个字符(三个)函数原型:int getchar() ;int getc(FILE *fstream) ;int fgetc(FILE *fstream) ;头文件:#include <stdio.h>参数:略返回值:1> EOF :文件结束2> >=0 :读取的字符的ASCII码3> <0 :出现错误备注:1>getc和fgetc的区别getc是一个宏2>返回值一定要用int类型,不是char类型3>三个函数遇到文件结束或者I/O错误时,都会返回负数,这个时候应该用两个函数来判断是那种情况:feof(FILE *fstream) ; // 是否文件结尾?ferror(FILE *fstream) ; // 是否出现错误?21:标准函数:测试是否到达一个文件流的结束函数原型:int feof(FILE *fstream) ;头文件:#include <stdio.h>参数:略返回值:略22:标准函数:测试一个文件流是否出现错误函数原型:int ferror(FILE *fstream) ;头文件:#include <stdio.h>参数:略返回值:略23:标准函数:字符回送函数函数原型:int ungetc(int c, FILE *fsteam) ;头文件:#include <stdio.h>参数:略返回值:1>如果回送成功,则返回字符c2>如果失败,则返回一个负数24:标准函数:字符输出函数函数原型:int putchar(int c) ;int putc(int c, FILE *fstream) ;int fputc(int c, FILE *fstream) ;头文件:#include <stdio.h>参数:略返回值:如果失败,则返回一个负数备注:其他相关事项和put类型相同25:标准函数:每次一行I/O的输入函数函数原型:int fgets(const char *buf, size_t size, FILE *fstream) ;头文件:#include <stdio.h>参数:略返回值:1>如果成功,返回实际写入的字节数2>如果返回值和size不相等,则出现错误26:标准函数:每次一行I/O的输出函数函数原型:int fputs(const char *buf, FILE *fstream) ;头文件:#include <stdio.h>参数:略返回值:1> >=0 :返回实际读取的字节数2> <0 :说明达到文件末尾或者出现错误备注:1>fgets函数中,如果缓存大小是size,则最多可以存放n-1个字符(包括‘\n’符号)2>fputs函数中,系统推荐在buf[size-2]字符=’\n’,但是并不强制这样做27:标准函数:读二进制文件或者数据类型函数原型:int fread(void *buf, size_t objsize, int objnum, FILE *fs 头文件:#include <stdio.h>参数:buf :缓存首地址objsize :一个字节所占的字节数目objnum :对象的数目返回值:1> >=0 :返回读到的对象数目2> <0 :到达文件终止或者出现错误备注:此函数可对数据操作或者二进制文件进行相关操作28:标准函数:写二进制文件或者数据类型函数原型:int fwrite(const void *buf,size_t size, int num, FILE *f) 头文件:#include <stdio.h>参数:buf :缓存首地址objsize :一个字节所占的字节数目num :要写入的字节数目返回值:如果返回值和num不相等,那么就出现了错误备注:fread和fwrite函数是有局限性的,因为各种操作系统同一种类型所占的空间大小也是有区别的29:标准函数:定位流函数函数原型:int fseek(FILE *fstream, long offset, int whence) ;头文件:#include <stdio.h>参数:offset :偏移量whence :从什么地方开始(SET,END,CURSOR)返回值:如果定位失败,则返回一个负数30:标准函数:重置文件流函数原型:int rewind(FILE *fstream)头文件:#include <stdio.h>参数:略返回值:略31:标准函数:建立临时文件(两个)函数原型:char* tmpnam(char *str) ;FILE* tmpfile(void) ;头文件:#include <stdio.h>参数:if (str == NULL)路径名会存储在str中if (str != NULL)路径名存储在系统的静态空间里面返回值:tmpnam :返回临时文件的路径名tmpfile :返回临时文件的指针-------------- From : Advanced Programming In UNIX Environment (1-5)----- ------。