在C语言中,文件的表示符号是整数型的,所以可以通过int定义文件。
open
可以通过open函数将具体的一个文件与文件描述符连接起来,其中read函数在fcntl.h中定义,如下:
int open(const char *path, int oflag, ...);
在使用open函数读写时,要首先确定文件的属性,比如后续操作文件时的属性(可写,可读,可追加,可创建)。
还需要定义文件在系统中的权限(不同用户的读写操作)。
一般而言,对文件的属性和权限的定义如下:
#define WRITE_FLAGS (O_WRONLY | O_CREAT | O_EXCL)
#define WRITE_PERMS (S_IRUSR | S_IWUSR)
write
通过write向文件描述符中写入内容,定义如下:
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
函数返回成功写入的字节数。
一个关于open、write的例子
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#define WRITE_FLAGS (O_WRONLY | O_CREAT | O_EXCL)
#define WRITE_PERMS (S_IRUSR | S_IWUSR)
int main(void)
{
int fd;
char buf[10] = "abcdefg";
fd = open("test.txt", WRITE_FLAGS, WRITE_PERMS);
write(fd, buf, 2);
return 0;
}
可以参看test.txt中内容为
ab
read
通过read可以从相应文件描述符中读取字符串,其定义如下:
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
函数返回成功读取的字符个数。
在读取文件时,一般需要定义open的属性,一般定义如下:
#define READ_FLAGS O_RDONLY
说明后续程序的操作只对文件内容进行读取。
一个open、read的例子
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#define READ_FLAGS O_RDONLY
#define WRITE_FLAGS (O_WRONLY | O_CREAT | O_EXCL)
#define WRITE_PERMS (S_IRUSR | S_IWUSR)
int main(void)
{
int fd;
char buf[10];
fd = open("test.txt", READ_FLAGS);
read(fd, buf, 4);
printf("the string read: %s\n", buf);
return 0;
}
test.txt的文件内容为:
abcdefg
程序运行的结果为: