Unix 环境高级编程-----文件操作函数

1. open()   O_RONLY O_WONLY O_RDWR

返回值为 文件描述符fd

2. creat()   创建新文件,这个函数的产生是因为最开始open函数没有O_CREAT 功能,所以单独开发的该函数

注:不是create,没有e

3. read()  读取fd对应的文件内容

4. write() 写信息到fd对应的文件中

5. lseek()  设置当前文件偏移量 SEEK_SET, SEEK_CUR, SEEK_END

6. close()  关闭fd对应的描述符

小结: open() 的O_APPEND 可以提供原子操作,保证写入动作都是在文件尾,所以当文件open 时设置了O_APPEND,即使使用lseek 设置偏移量后写入信息,信息仍然会被写入文件尾!

时间: 2024-11-05 06:27:41

Unix 环境高级编程-----文件操作函数的相关文章

unix环境高级编程——文件操作

一.阻塞io操作和非阻塞io操作 对于阻塞io操作:当cpu得不到需要的文件数据的时候,则将自己挂起,直到有了数据,才能执行下面的操作. 非阻塞io:  当cpu得不到文件时候,其一直在轮询cpu,直达得到数据. 二.文件描述符 对于内核而言,所有打开的文件,都用文件描述符来引用.所有的文件操作都是由内核态完成的,当一个用户的进程创建一个文件时候,内核会给其返回一个文件描述符. 而当用户进程,对文件进行各类读写操作的时候,也是给内核传入文件描述符.这样,就可以对其文件进行操作了. 三.open函

UNIX环境高级编程之-----popen函数

头文件: #include <stdio.h> 函数说明: FILE * popen ( const char * command , const char * type ); int pclose ( FILE * stream ); 说明:(参考unix环境高级编程) popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程.这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数.pclose() 函数关闭标准

unix环境高级编程——文件i/o

一.文件描述符 对于内核,通过文件描述符来管理文件.什么是文件描述符? 在unix中,用open或者create建立几个文件时候,内核向进程返回一个整数,用来记录此文件. 以后对文件进行操作的时候,就用此文件描述符做引用. 二.open函数 open函数用于建立一个文件,函数返回文件描述符. [cpp] view plaincopy #include <fcntl.h> int open(const char *pathname, int flag); int open(const char 

UNIX环境高级编程 文件I/O

大多数文件I/O 只需要用到 5个函数 :    open , read , write , lseek , close 本章描述的都是不带缓冲的I/O(read write 都调用内核中的一个系统调用) 文件描述符 对于内核而言,所有文件都通过文件描述符引用. 文件描述符是一个非负整数 打开或创建一个新文件时,内核都将返回一个文件描述符 文件描述符的范围是 0~OPEN_MAX-1 函数 open 和 openat 调用 open 或 openat 可以打开或创建一个文件 int open(

UNIX 环境高级编程 文件和目录

函数stat , fstat , fstatat , lstat stat函数返回与此文件有关的信息结构. fstat函数使用已打开的文件描述符(而stat则使用文件名) fstatat函数 为一个相对于当前打开目录的路径名返回文件信息. lstat函数返回该符号链接的有关信息,而不是该符号链接引用的文件的信息. 使用stat最多的地方可能就是 ls -l 命令. st_mode  与 S_IFMT 进行 与 运算 在与 S_IFXXX常量相比较,来判断类型. 文件类型 1.普通文件: 无论是文

Unix环境高级编程(七)fork函数总结

在Unix/Linux中用fork函数创建一个新的进程.进程是由当前已有进程调用fork函数创建,分叉的进程叫子进程,创建者叫父进程.该函数的特点是调用一次,返回两次,一次是在父进程,一次是在子进程.两次返回的区别是子进程的返回值为0,父进程的返回值是新子进程的ID.子进程与父进程继续并发运行.如果父进程继续创建更多的子进程,子进程之间是兄弟关系,同样子进程也可以创建自己的子进程,这样可以建立起定义关系的进程之间的一种层次关系. 程序包含位于内存的多个组成部分,执行程序的过程将根据需要来访问这些

UNIX环境高级编程8.10exec函数

// proc/exec1.c 8-8 #include "apue.h" #include <sys/wait.h> const char* env_init[] = { "USER=unknown", "PATH=/home/sunyj/apue/proc/", NULL }; int main(void) { pid_t pid; if ((pid = fork()) < 0) { err_sys("fork e

【UNIX环境高级编程 | 7】函数signal

命令形参 命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数. 应当指出的是, argv[0]存储程序的名称,argv[1]是一个指向第一个命令行参数的指针,argv[n]是最后一个参数. 如果没有提供任何参数,argc 将为1,否则,如果传递了一个参数,argc将被设置为2. 多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号或单引号内部. 1 #include <st

UNIX环境高级编程---标准I/O库

前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压根不是一码事.Unix I/O也叫低级I/O,也叫Unbuffered I/O,是操作系统内核部分,也是系统调用:而C标准I/O函数相对也成Buffered I/O,高级I/O,一般是为了效率考虑对这些系统调用的封装.以前使用getchar()经常为输入完后的回车而出错.那是不理解标准I/O实现时的