1)通常需要包含的头文件:
#include<sys/types.h>
#inclide<sys/stat.h>
#include<fcntl.h>
2)系统调用-创建
int creat(const char *filename, mode_t mode);
参数 filename:要创建的文件名(包含路径,缺省为当前路径)
mode:创建模式,常见创建模式:S_IRUSR-可读(4);S_IWUSR-可写(2);
S_IXUSR-可执行(1);S_IRWXU-可读、写、执行(7)。
注:mode参数通常用一个8进制数据表示。该数据与linux的chmod命令所带权限参数类似,如:
create ("/dev/vip", 0777);
3) int main(int argc, char *argv[]);
argc:参数个数;
argv:参数值。
4)文件描述: 在Linux系统中,所有打开的文件都对应一个文件描述符(相当于打开的文件的身份证号)。
文件描述符的本质是一个非负整数。当打开一个文件时,该整数由系统来分配。文件描述符的范围是
0 ~ OPEN_MAX。早期UNIX版本OPEN_MAX=19,即允许每个进程同时打开20个文件,现在很多系
统则将其增加至1024.
5)系统调用-打开
int open(const char *pathname, int flag);
int open(const char *pathname, int flag, mode_t mode);
pathname:要打开的文件名(包含路径,缺省为当前路径);
flag:打开标志。
常见打开标志:
O_RDONLY 只读方式打开
O_WRONLY 只写方式打开
O_RDWR 读写方式打开
O_APPEND 追加方式打开
O_CREAT 打开文件,若不存在则创建一个文件(此时必须使用带mode参数的open函数)
O_NOBLOCK 非阻塞方式打开
返回:int 文件描述符
6)系统调用-关闭
int close(int fd)
fd:文件描述符,来源于打开文件时得到
7)系统调用-读
int read(int fd, const void *buf, size_t length)
功能:从文件描述符fd指定的文件中读取length个字节到buf所指向的缓冲区中。返回值为实际读取的字节数。
8)系统调用-写
int write(int fd, const void *buf, size_t length)
功能:把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。
9)系统调用-定位
int lseek(int fd, offset_t offset, int whence)
功能:将文件读写指针相对whence移动offset个字节。操作成功是,返回文件指针相对于文件头的位置。
whence可使用下述值:
SEEK_SET:相对于文件开头
SEEK_CUR:相对于文件读写指针的当前位置
SEEK_END:相对于文件末尾
offset为负数表示左移,为正数表示右移。
10)系统调用-访问判断
int access(const char *pathname, int mode)
pathname:文件名称
mode:要判断的访问权限。可使用如下值,或其组合:
R_OK:文件可读
W_OK:文件可写
X_OK:文件可执行
F_OK:文件存在
测试成功时返回0,如果一个条件不符,返回-1.
如: if (access("/etc/passwd", R_OK) == 0) {
printf("/etc/passwd can be read!\n")
}