系统调用 open close write read 示例
This commit is contained in:
parent
bd6eb65926
commit
23d395c790
|
@ -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 用于创建文件时,如果文件已经存在,则报错 (保证文件的唯一性,原子性)
|
||||||
|
*/
|
|
@ -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;
|
||||||
|
}
|
|
@ -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; // 返回成功码
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue