- 以写方式打开文件
int fd = open(“/home/mytest/123.txt”,
O_WRONLY | O_CREAT,
0644);
参数1: 文件路径
参数2: 标识位,O_WRONLY表示写入,
O_CREAT表示当不存在时,创建新文件
参数:0644,表示创建文件时的权限位
(0644: 字面常量,8进制)
- 以读方式打开文件
int fd = open(“/home/mytest/123.txt”,
O_RDONLY);
参数1:文件路径
参数2:O_RDONLY: 以只读方式打开
参数3:省略
- 写文件:
write(fd, buf, n);
读文件:
int n = read(fd, buf, maxsize);
关闭文件:
close(fd);
fd: file descriptor文件描述符,是一个整数
- 以下三者选一:
O_RDONLY 只读方式
O_WRONLY 以只写方式打开文件
O_RDWR 以可读写方式打开文件
额外的标识位:
O_CREAT可与O_WRONLY联用,若欲打开的文件不存在则自
动建立该文件
O_TRUNC 可与O_WRONLY联用,在打开文件时清空文件
O_APPEND可与O_WRONLY联用,表示追加内容
O_NONBLOCK 表示以“非阻塞”方式读/写数据时
read.cpp
// ANSI C #include <stdio.h> // Linux API #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main() { // 注:你是否对/home/mytest/123.txt有读权限 int fd = open("/home/mytest/123.txt", O_RDONLY); if(fd < 0) { printf("failed to open file!\n"); return -1; } char data[12]; int n = read(fd, data, 12); if(n>0) { data[n] = 0; printf("read: %s \n", data); } close(fd); }
write.cpp
// ANSI C #include <stdio.h> // Linux API #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main() { // 注:你是否对/home/mytest/目录有写权限? int fd = open("/home/mytest/123.txt", O_WRONLY|O_CREAT, 0644); if(fd < 0) { printf("failed to open file!\n"); return -1; } char data[12] = "hello"; write(fd, data, 5); close(fd); }
stdc.cpp
// ANSI C #include <stdio.h> #include <string.h> int main() { // 注:你是否对/home/mytest/目录有写权限? FILE* fp = fopen("/home/mytest/aaa.txt", "wb"); if(!fp) { // 无权访问 printf("failed to open file!\n"); return -1; } // 使用linux的标准换行符\n char buf[] = "hello\nworld\n"; fwrite(buf, 1, strlen(buf), fp); fclose(fp); }