Linux-文件操作

Linux系统下文件操作的编程方法主要有两种:原始文件I/O编程模式和标准I/O库编程模式。原始文件I/O模式是指Linux系统的文件编程API,是一种不带缓存的文件I/O。与window环境下相比的编程API类似,是一种底层文件操作系统调用

@注解:不带缓存是指对文件操作函数都调用系统内核的一个系统调用,标准I/O库则是带缓存的文件I/O,标准I/O代替用户进行许多缓存细节方面的出来,如缓存的分配,执行I/O操作时优化缓存长度

文件编程的基本概念:

1 文件描述符:它是一个非负整数,其取值范围为0~OPENMAX,当进程创建一个新文件时或者打开一个现有的文件时,系统内核将向进程分配一个文件描述符。文件描述符在进程范围内是唯一的,并且每个进程可以同时打开的文件数目不能大于OPENMAX,OPENMAX是一个宏定义,它的取值在不同的Linux版本中是不同的可以通过执行命令ulimit -n获取它的当前值,当文件进行I/O操作时,大多是函数都用文件描述符为参数,代表要操作的文件。

2 标准输入,标准输出与标准错误输出

在Linux进程启动时,内核默认为每个进程打开3个文件,标准输入,标准输出,标准错误输出文件,同样,3个文件也分配了文件描述符,分别是0,1,2。标准输入文件被映射至键盘,而标准输出文件和标准错误输出文件被映射至监视器,由于这三个以有内核自动打开的文件描述符,在程序中可以直接引用,引用的方式可以直接用数字,也可以使用他们的宏定义:STDIN_FILENO STDOUT_FILENO STDERR_FILENO

3 设置-用户-ID与设置-组-ID

每个文件都有自己的文件属主(用户ID)和组(用户组ID),如果这个文件是可执行的程序文件,那么当该文件被指向时就会在操作系统中形成进程,每个进程都有一个有效用户ID和有效组ID,这两个与进程相关联的ID的作用是进行文件存取许可检查。除此之外,每个进程还有另外两个ID,分别称作实际用户ID和实际组ID。这两个就是执行该程序用户的用户ID和组ID

在通常情况下,进程的有效用户ID就是实际用户ID,进程的有效组ID就是实际组ID,但是Linux系统提供了一种特殊机制,可以在文件的属主权限中设置这一标志,这个标志的作用是:当执行该文件时,将进程的有效用户ID设置为该文件的所有者的用户ID

如果设置了该标志,那么当一个文件被执行时,其有效用户ID(用于文件存取许可检查)不再是调用该进程的用户,而是该文件的属主ID,这种机制就称作设置-组-ID,也称作suid,同样,对于组的权限也可以设置这样标志,称作设置-组-ID,也是sgid.suid可以通过执行命令chmod u+s完成。同样,sgid可以通过执行命令chmod g+s完成






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值