提笔不会忘字的人,提键盘却忘了编程语言,差点忘本了,用python,shell等脚本语言忘记C语言怎么用了,研究文件系统简单的文件读写不会写了,记录一下。
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/stat.h>
int main() {
const char* filename = "example.txt";
mode_t mode = 0666; // 文件权限模式
int fd = open(filename, O_CREAT | O_WRONLY, mode);
if (fd == -1) {
perror("Failed to open or create file");
return 1;
}
// 文件打开成功,可以进行写入操作
const char* content = "Hello, World!";
ssize_t bytes_written = write(fd, content, strlen(content));
if (bytes_written == -1) {
perror("Failed to write to file");
return 1;
}
printf("Successfully written %ld bytes to file.\n", bytes_written);
// 关闭文件
if (close(fd) == -1) {
perror("Failed to close file");
return 1;
}
return 0;
}
open函数是一个在C语言中用于打开文件的系统调用函数。它提供了对文件的创建、打开和访问的功能。open函数的原型如下:
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
open函数的参数如下:
- mode:只有在使用O_CREAT标志位创建新文件时才需要指定。它用于设置新文件的权限模式(文件的访问权限)。如果不使用O_CREAT标志位,则可以将mode参数省略。
open函数返回一个整数值,表示文件描述符(file descriptor)。如果打开或创建文件失败,返回值为-1,并设置全局变量errno以指示错误的类型。
文件权限模式选项用于设置文件的读取、写入和执行权限。在UNIX/Linux系统中,可以使用以下选项来设置文件权限模式:
这些选项可以通过按位或运算符(|)组合使用,以设置所需的权限模式。例如,要为文件设置所有者具有读和写权限,而其他用户仅具有读权限,可以使用以下模式:
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
如果使用777即为:
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
可以使用%o,进行输出查看mode的值。
#include <sys/stat.h>
#include <stdio.h>
int main() {
mode_t mode = S_IRWXU; // 设置文件所有者的权限为读、写和执行
printf("Mode: %o\n", mode);
return 0;
}
在C语言中,可以使用chmod函数来修改文件的权限。chmod函数的原型如下:
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
chmod函数接受两个参数:
#include <sys/stat.h>
#include <stdio.h>
int main() {
const char* filename = "example.txt";
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; // 设置文件权限为 640
if (chmod(filename, mode) == -1) {
perror("Failed to change file permissions");
return 1;
}
printf("File permissions changed successfully.\n");
return 0;
}