linuxc编程第三讲.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:32 大小:260KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

linuxc编程第三讲.pdf

linuxc编程第三讲.pdf

预览

免费试读已结束,剩余 22 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

LINUX系统编程LINUXLINUX系统编程系统编程信息科学与工程学院付冲LINUX系统编程第三讲Linux文件系统程序设计例1:使用umask例2:使用open和close例3:使用read,write例4:使用fstat例5:使用ftruncate,lseek,fsync例6:用fcntl进行文件锁操作例7:使用dup2重定向stdoutLINUX系统编程例1:使用umask文件的权限位定义:0位(最低位):其它用户执行权限位1位:其它用户写权限位2位:其它用户读权限位3位:同组用户执行权限位4位:同组用户写权限位5位:同组用户读权限位6位:文件所有者执行权限位7位:文件所有者写权限位8位:文件所有者读权限位LINUX系统编程进程的umask进程的umask是新创建的文件、目录应关闭的访问权限位的位掩码。例:0222表示关闭文件主(创建文件的进程的用户)、同组用户、其它用户的写权限。为1的位表示对应权限关闭。LINUX系统编程系统调用umask#include<sys/stat.h>mode_tumask(mode_tnewmask);功能:修改进程的umask,设置为newmask,并将原来的umask返回。LINUX系统编程例1使用umask程序名称:newmask.cLINUX系统编程例2:使用open和close使用的系统调用opencreatcloseLINUX系统编程open#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>intopen(constchar*pathname,intflags);功能:打开文件,将文件控制块调入内存,为文件读写做好准备参数:pathname:文件路径,含文件名flags:标志LINUX系统编程openflags:标志O_RDONLY:只读O_WRONLY:只写O_RDWR:读写O_CREAT:创建O_EXCL:创建时使用,若文件已存在时创建失败O_NOCTTY:不常用,打开终端文件时的选项O_TRUNC:若文件存在,文件长度置0O_APPEND:文件指针初始化为文件末尾O_NONBLOCK:使读操作不阻塞O_SYNC:写操作时不缓冲,直接写入磁盘LINUX系统编程open返回值:成功时返回文件描述符,失败返回-1并设置errno。文件描述符:整数,文件占用的进程打开文件表表目序号。LINUX系统编程creat#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>intcreat(constchar*pathname,intflags,mode_tmode)功能:创建文件。相当于open(pathname,O_CREAT|O_TRUNC|O_WRONLY,mode);mode指出文件权限LINUX系统编程close#include<unist.d>intclose(intfd);功能:关闭文件,即将修改过的文件内容、文件控制块内容写回磁盘。LINUX系统编程例2:使用open和close程序名称:fdopen.cLINUX系统编程例3:使用read,write使用的系统调用readwriteLINUX系统编程read#include<unistd.h>ssize_tread(intfd,constvoid*buf,size_tcount);功能:读文件buf:读到的文件内容存入buf指向的缓冲区count:期望读到的字节数从文件指针指向位置开始读,读操作完成后文件指针后移count个字节。返回值:实际读到的字节数出错时返回-1,并设置errno遇到文件末尾返回0LINUX系统编程write#include<unistd.h>ssize_twrite(intfd,constvoid*buf,size_tcount);功能:写文件buf指向位置开始的count个字节写入文件中文件指针指向位置开始处。写操作完成后文件指针后移count个字节返回值为实际写入文件的字节数。调用失败返回-1,并设置errno。LINUX系统编程例3:使用read,write程序名称:fdread.cLINUX系统编程例4:使用fstat#include<sys/stat.h>#include<unistd.h>intfstat(intfd,structs