01-系统调用.c

一、操作系统的五大功能:
{
1.进程管理
2.内存管理
3.文件系统管理
4.设备控制
5.网络管理
}

二、什么是系统调用
{
1.系统调用就是内核提供的接口函数
2.遵循POSIX标准,可移植性强
}

三、系统调用 I/O 函数
{
头文件
{
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
}

系统默认打开的三个文件:
{
	#define STDIN_FILENO	0
	#define STDOUT_FILENO	1
	#define STDERR_FILENO	2
}

open()函数
{
	当文件存在时使用:
		int open(const char *path, int flags)
	当文件不存在时使用:
		int open(const char *path, int flags, mode_t mode)
	
	返回值:
		成功:返回文件描述符
		失败:返回-1,可以利用perror去查看失败原因
		
	flags 的取值含义:
	{
		O_RDONLY
		O_WRONLY
		O_RDWR
		
		flags除了取上述值以外,还可以与下述值位或
		O_CREAT :文件不存在则创建文件,使用此选项时,需使用mode参数说明文件的权限
		O_EXCL : 如果同时指定了O_CREAT,且文件已经存在,则出错
		O_TRUNC	: 如果文件存在,则清空文件内容
		O_APPEND : 写文件时,数据添加到文件末尾
		O_NONBLOCK : 当打开的文件是FIFO,字符文件,块文件时,此选项为非阻塞标志位
	}
	
	mode 的取值含义:
	{
		S_IRWXU		00700		文件所有者的读、写、可执行权限
		S_IRUSR		00400		文件所有者的读权限
		S_IWUSR		00200		文件所有者的写权限
		S_IXUSR		00100		文件所有者的可执行权限
		
		S_IRWXG		00070		文件所有者同组用户的读、写、可执行权限
		S_IRGRP		00040		文件所有者同组用户的读权限
		S_IWGRP		00020		文件所有者同组用户的写权限
		S_IXGRP		00010		文件所有者同组用户的可执行权限			
		
		S_IRWXO		00007		其他组用户的读、写、可执行权限
		S_IROTH		00004		其他组用户的读权限
		S_IWOTH		00002		其他组用户的写权限
		S_IXOTH		00001		其他组用户的可执行权限			
	}
	
}

close()函数
{
	int close(int fd)
	
	参数:
		fd: 文件描述符
	
	返回值:
		成功:返回0
		失败:返回-1,可以利用perror去查看失败原因
}

write()函数
{
	size_t write(int fd, const void *addr, size_t count)
	
	参数:
		fd: 文件描述符
		addr: 数据首地址
		count: 写入数据的字节个数
	
	返回值:
		成功:返回实际写入数据的字节个数
		失败:返回-1,可以利用perror去查看失败原因
}

read()函数
{
	size_t read(int fd, const void *addr, size_t count)
	
	参数:
		fd: 文件描述符
		addr: 内存首地址
		count: 读取的字节个数
		
	返回值:
		成功:返回实际读出数据的字节个数
		失败:返回-1,可以利用perror去查看失败原因	
}

remove()
{
	int remove(const char *pathname)
	
	参数:
		pathname: 文件的路径名+文件名
		
	返回值:
		成功:返回0
		失败:返回-1,可以利用perror去查看失败原因
}

ioctl()函数
{
	
}

}

四、系统调用与库函数
{
1.有些库函数不需要调系统调用
2.系统调用需要由用户态切到内核态,消耗系统资源与时间
3.单次调用,系统调用效率更高
4.频繁调用,由于缓冲区的存在,库函数的效率会更高
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值