- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
研究生操作系统考试重要函数及知识点讲解
重要函数及知识点
1.int open(const char *pathname, int oflag, .../* mode_t mode*/)
返回值:若成功则返回文件描述符,若出错则返回-1.
oflag:
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读、写打开
在这三个常量中必须指定一个且只能指定一个。
由open返回的文件描述符一定是最小的未用描述符数值。
int creat(const char *pathname, mode_t mode)
返回值:若成功则返回为只写打开的文件描述符,若出错则返回-1.
它以只写方式打开创建的文件,创建好后关闭了用open打开才能读。
3.int close(int filedes)
返回值:若成功则返回0,若出错则返回-1。
关闭文件时还会释放该进程加在该文件上的所有记录锁。
4.off_t lseek(int filedes, off_t offset, int whence)
返回值:若成功则返回新的文件偏移量,若出错则返回-1.(如果文件描述符引用的 是一个管道、FIFO或网络套接字,则返回-1,并将errno设置为ESPIPE)
whence:
SEEK_SET:将该文件的偏移量设置为文件开始处offset个字节。
SEEK_CUR:将该文件的偏移量设置为当前值加offset,offset可为正或负。
SEEK_END:将该文件的偏移量设置为文件长度加offset,offset可为正或负。
Lseek仅将当前的文件偏移量记录在内核中,它并不引起任何i/o操作。
Lseek与write一起可能会造成文件空洞,但是有空洞时,虽然总长度长,但是实际不占磁盘。
5.ssize_t read(int filedes, void *buf, size_t nbytes);
返回值:若成功则返回读到的字节数,若已到文件结尾则返回0,若出错则返回-1.
注意:是将文件中的内容读到buf中。
在读到要求的字节数之前到达文件尾端,下一次再调用read时,返回0.
6.ssize_t write(int filedes, const void *buf, size_t nbytes);
返回值:若成功则返回已写的字节数,若出错则返回-1。
注意:是将buf中的内容写到文件中。
7.int dup2(int filedes, int filedes2)
返回值:若成功则返回新的文件描述符,若出错则返回-1;
文件共享:
每个打开文件(或设备)都有一个 v 节点(v-node)结构。v 节点包含了文件类型和对此文件进行各种操作的函数的指针。v 节点还包含了从磁盘读取的 i 节点(i-node)的信息,i 节点信息包含了文件的所有者、文件长度、文件所在的设备、指向文件的实际数据块在磁盘上的所在位置的指针等。
一个进程打开两个文件:
不同进程打开同一文件:
8 . stat函数:
int stat(const char *restrict pathname, struct stat *restrict buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *restrict pathname, struct stat *restrict buf);
返回值:若成功返回0,出错返回-1.
stat函数在给定pathname时返回于此命明文件有关的信息结构(注意:它没有打开而只是读出)
fstat函数获取已打开的文件的有关信息
lstat返回符号链接的有关信息
9. int main(int argc,char *argv[]);
Argc 是命令行参数的数目,argv是指向参数的各个指针所构成的数组
在调用main函数之前先调用一个特殊的启动例程,可执行程序将此启动例程指定为程序的起始地址,启动例程从内核中取得命令行参数和环境变量值,然后为调用main函数做好安排。
终止处理程序Exit函数
void exit(int status);
void _Exit(int status);
void _exit(int status);
_exit _Exit立即进入内核,exit则先执行一些清理处理(总是之心一个标
文档评论(0)