5 5 c语言编程,5.5 C语言编程进阶.pdf

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编程接口中的较高层接

实际上很多库函数都是利用系统调用来实

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值