5.5 C语言编程进阶
嵌入式系统程序设计
大连理工大学软件学院
嵌入式系统工程系
赖晓晨
C语言编程进阶
文件操作
目录操作
内存管理
进程控制
进程间通信
一、文件操作
Linux文件属性
库函数和系统调用的区别
打开和关闭文件
读写文件
获取文件状态
文件定位
删除文件、文件改名
0、linux文件属性
linux的大多数资源都以文件的形式存
在
普通文件:以字节为单位进行访问
管道:有名管道、无名管道
目录:也称为目录文件
设备:字符特殊文件、块特殊文件
符号链接:到达另一个文件的路径
套接口:在不同机器间通信
文件模式
文件的模式是一个16bit位的域,一般
由八进制数来表示
ls – l /bin/cat
-rwxr-xr-x 1 root root 71680 Jul 13 2003 /bin/cat
**** *** *********
文件类型 修饰位 访 问 位
文件模式说明
修饰位
setUID: 执行此程序的进程的UID和GID分
setGID: 别被设置为文件的所有者和所在组
粘附位:尽可能的把文件保留在内存中
文件类型
如前所述
访问位说明
位掩码umask:是新创建的文件或目
录应关闭的权限位的掩码
umask系统调用
#include
mode_t umask(mode_t newmask)
返回原来的mask值
#include
#include
#include
#include
int main(void)
{
mode_t newmask = 0222, oldmask;
system("touch before");
oldmask = umask(newmask);
printf("old mask is %#o\n", oldmask);
printf("new mask is %#o\n", newmask);
system("touch after");
exit(EXIT_SUCCESS);
}
~/exp/low/umask.c
#include
touch工具默认权限是644
#include 但是umask 0222指定用户生成的新文件
#include 没有写权限,因此实际权限是444
#include
int main(void)
{
mode_t newmask = 0222, oldmask;
system("touch before");
oldmask = umask(newmask);
printf("old mask is %#o\n", oldmask);
printf("new mask is %#o\n", newmask);
system("touch after");
exit(EXIT_SUCCESS);
}
~/exp/low/umask.c
1、库函数和系统调用的区别
区别1
系统调用可以直接访问内核提供的丰富功
能,是内核的低级接口
库调用属于linux编程接口中的较高层接
口
实际上很多库函数都是利用系统调用来实