系统调用 open close write read 示例

This commit is contained in:
flykhan 2023-08-15 14:09:36 +08:00
parent bd6eb65926
commit 23d395c790
4 changed files with 112 additions and 0 deletions

View File

@ -0,0 +1,32 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h> // 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 ()
*/

31
day2/read_test.c Normal file
View File

@ -0,0 +1,31 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h> // 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;
}

19
day2/remove_test.c Normal file
View File

@ -0,0 +1,19 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h> // 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; // 返回成功码
}

30
day2/write_test.c Normal file
View File

@ -0,0 +1,30 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h> // 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;
}