1.思维导图
2.使用3语言编写一个简易的界面,界面如下
1.标准输出流
2.标准错误流
3.文件流
要求:按1的时候,通过printf输出数据,按2的时候,通过perror输出数据,按3的时候将输入写入文件中 同时通过dup2函数,将标准错误流重定向到错误日志,将文件流重定向到终端
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>int main() {int choice;char input[100];int file_fd, log_fd;while (1){printf("请选择操作:\n");printf("1. 标准输出流\n");printf("2. 标准错误流\n");printf("3. 文件流\n");printf("4. 退出\n");printf("请输入选项:");scanf("%d",&choice);// while(getchar()!=10)getchar();switch (choice){case 1:printf("请输入要输出的数据:");fgets(input, sizeof(input), stdin);printf("%s\n", input);break;case 2:printf("请输入要输出的数据:");fgets(input, sizeof(input), stdin);perror(input);break;case 3:printf("请输入要写入文件的数据:");fgets(input, sizeof(input), stdin);file_fd = open("2.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);log_fd = open("error.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);dup(1);dup2(file_fd,1);write(file_fd, input, strlen(input));fflush(stdout);dup(log_fd);dup2(3, log_fd);close(file_fd);close(log_fd);break;case 4:printf("退出程序。\n");exit(0);default:printf("无效选项,请重新输入。\n");break;}}return 0;
}
3.使用stat函数判断一个文件是否存在 同组人可执行 权限,如果存在则去除该权限,如果不存在则追加该权限 自己想办法查询 更改文件权限的函数是什么
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>int main(int argc, char *argv[])
{const char *filename = argv[1];struct stat file_stat;stat(filename, &file_stat);if (S_ISREG(file_stat.st_mode)){if (file_stat.st_mode & S_IXGRP){printf("存在权限,移除%s的同组可执行权限\n", filename);chmod(filename, file_stat.st_mode & ~S_IXGRP);}else{printf("权限不存在,添加权限\n");chmod(filename, file_stat.st_mode | S_IXGRP);}}else{printf("文件错误\n");}return 0;
}