diff --git a/day2/open_or_create_test.c b/day2/open_or_create_test.c new file mode 100644 index 0000000..54d3341 --- /dev/null +++ b/day2/open_or_create_test.c @@ -0,0 +1,32 @@ +#include +#include +#include +#include +#include // close + +int main(int argc, char const *argv[]) +{ + // 打开或创建一个文件,以只写方式打开,如果文件不存在则创建,如果文件已存在则报错 + // 权限设置为用户可读、用户可写、组可读和其他人可读 + int fd = open("test.txt", O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + if (fd < 0) + { + perror("open"); // 打印错误信息 + return -1; // 返回错误码 + } + printf("打开并创建文件成功\n"); + if (close(fd) < 0) + { + perror("close"); // 打印错误信息 + return -1; // 返回错误码 + } + + return 0; // 返回成功码 +} + +/* + 文件以只写方式打开,如果文件不存在则创建,权限为 0644 + "trunc" 来源于英语单词 "truncate",意为 "截断" 或 "缩短"。 + int fd = open("d1_test.txt", O_WRONLY | O_CREAT | O_TRUNC, 0654); + O_EXCL 用于创建文件时,如果文件已经存在,则报错 (保证文件的唯一性,原子性) +*/ \ No newline at end of file diff --git a/day2/read_test.c b/day2/read_test.c new file mode 100644 index 0000000..ebcf41f --- /dev/null +++ b/day2/read_test.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include // close + +// 读取数据 +int main(int argc, char const *argv[]) +{ + int fd = open("test.txt", O_RDONLY); // 打开文件,以只读方式打开 + if (fd < 0) + { + perror("open"); // 打开文件失败时输出错误信息 + return -1; + } + + char buffer[128] = ""; // 用于存储读取的数据的缓冲区 + ssize_t len = read(fd, buffer, sizeof(buffer)); // 读取数据 + if (len != -1) + { + printf("从文件号: %d, 读取数据成功: %ld bytes\n", fd, len); // 输出读取成功的信息 + printf("读取到的数据为: %s\n", buffer); // 输出读取到的数据 + } + + if (close(fd) < 0) // 关闭文件 + { + perror("close"); // 关闭文件失败时输出错误信息 + return -1; + } + return 0; +} diff --git a/day2/remove_test.c b/day2/remove_test.c new file mode 100644 index 0000000..a7281ff --- /dev/null +++ b/day2/remove_test.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include +#include // close + +// 删除文件 +int main(int argc, char const *argv[]) +{ + int fd = remove("test.txt"); // 删除文件 "test.txt" + if (fd < 0) + { + perror("remove"); // 打印错误信息 + return -1; // 返回错误码 + } + printf("删除文件成功\n"); + + return 0; // 返回成功码 +} diff --git a/day2/write_test.c b/day2/write_test.c new file mode 100644 index 0000000..a265191 --- /dev/null +++ b/day2/write_test.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include +#include // close + +// 写数据 +int main(int argc, char const *argv[]) +{ + int fd = open("test.txt", O_WRONLY | O_TRUNC); // 打开文件,以只写方式打开并清空文件内容 + if (fd < 0) + { + perror("open"); // 打开文件失败时输出错误信息 + return -1; + } + + char content[32] = "hello world\n"; // 要写入的数据 + ssize_t len = write(fd, content, sizeof(content)); // 写入数据 + if (len != -1) + { + printf("向文件号: %d, 写入数据成功: %ld bytes\n", fd, len); // 输出写入成功的信息 + } + + if (close(fd) < 0) // 关闭文件 + { + perror("close"); // 关闭文件失败时输出错误信息 + return -1; + } + return 0; +}