当开始运行程序时,他一般会有已经打开的文件描述符:0--标准输入;1--标准输出;2--标准错误。
write系统调用:
read系统调用:
open系统调用:
open建立了一条到文件或设备的访问路径(提供一个文件描述符供操作)。如果操作成功,返回一个文件描述符,read和write等系统调用就可以使用文件描述符就可以对打开的文件进行操作。这个文件描述符是唯一的,它不会与任何其他运行中的进程共享。如果两个程序同时打开同一个文件,会得到两个不同的文件描述符,它们之间没有关系,如果它们都对文件做写操作,那么会相互覆盖,各写各的。
close系统调用:
注意,有时检查close调用的返回结果是十分重要的,有的文件系统,特别是网络文件系统,可能不会在关闭之前报告文件写操作中出现的错误,因为执行写操作时,数据可能未被确认写入。
write系统调用:
#include<unistd.h>
size_t write(int fildes,const void * buf,size_t nbytes);
read系统调用:
#include <unistd.h>
size_t read(int fildes,void *buf,size_t nbytes);
open系统调用:
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
int open(const char * path,int oflags);
int open(const char * path,int oflags,mode_t mode);
open建立了一条到文件或设备的访问路径(提供一个文件描述符供操作)。如果操作成功,返回一个文件描述符,read和write等系统调用就可以使用文件描述符就可以对打开的文件进行操作。这个文件描述符是唯一的,它不会与任何其他运行中的进程共享。如果两个程序同时打开同一个文件,会得到两个不同的文件描述符,它们之间没有关系,如果它们都对文件做写操作,那么会相互覆盖,各写各的。
close系统调用:
#include <unistd.h>
int close(int fildes);
注意,有时检查close调用的返回结果是十分重要的,有的文件系统,特别是网络文件系统,可能不会在关闭之前报告文件写操作中出现的错误,因为执行写操作时,数据可能未被确认写入。