编写Linux C程序,列出stu2主目录中的文件信息,并将其中saturday.txt文件的权限设置为文件所有者可读可写、同组用户只读、其他用户无权限。
时间: 2024-03-23 17:37:07 浏览: 49
你可以使用以下代码实现:
```c
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
char *dir_path = "/home/stu2"; // stu2主目录路径
char *file_name = "/saturday.txt"; // 文件名
char *file_path = strcat(dir_path, file_name); // 拼接文件路径
struct stat file_stat;
if (stat(file_path, &file_stat) == -1) {
perror("stat error");
return -1;
}
// 修改文件权限
if (chmod(file_path, (file_stat.st_mode & ~S_IWOTH) | S_IWUSR | S_IRGRP) == -1) {
perror("chmod error");
return -1;
}
printf("File permissions changed successfully!\n");
return 0;
}
```
这个程序使用了 `<sys/stat.h>` 和 `<unistd.h>` 头文件中的函数。其中,`stat()` 函数用于获取文件的权限信息,`chmod()` 函数用于修改文件的权限。
在这个程序中,首先定义了 stu2 主目录路径和文件名,然后使用 `strcat()` 函数将它们拼接成完整的文件路径。接着,使用 `stat()` 函数获取文件的权限信息,并对其进行修改,使得文件所有者可读可写、同组用户只读、其他用户无权限。最后输出修改成功的信息。
需要注意的是,程序中对文件权限的修改是一次性的,即只修改了 `saturday.txt` 文件的权限,而没有修改其它文件的权限。如果需要修改其它文件的权限,需要编写相应的代码。
另外,需要注意使用 `perror()` 函数来输出错误信息,方便调试。