#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> int main(int argc,char* argv[]){ if(argc !=3) { printf("Usage: %s filename r/w\n",argv[0]); return 1; } int fd; if (argv[2][0] == 'r'){ fd = open(argv[1],O_RDONLY); } else if (argv[2][0] == 'w'){ fd = open(argv[1],O_WRONLY); } else { printf("Invalid flag: %c \n",argv[2][0]); return 1; } if (fd == -1){ perror("open"); return 1; } char buf[100]; if (argv[2][0] == 'r'){ int n = read(fd, buf, sizeof(buf)); if(n == -1){ perror("read"); return 1;} buf[n] = '\0'; printf("read from file: %s\n",buf);} else{sprintf(buf,"20009201099 %s","MYFILE"); int n = write(fd, buf, sizeof(buf)); if (n == -1){ perror("write"); return 1; } printf("write to file successfully\n"); } if (close(fd) == -1){ perror("close"); return 1; } return 0; }为这个代码写注释
时间: 2024-03-26 22:34:56 浏览: 109
mysql的udf编程之非阻塞超时重传
```
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h> // 文件控制相关头文件
#include <unistd.h> // Unix 标准头文件
int main(int argc,char* argv[]){
if(argc !=3) { // 检查参数数量是否正确
printf("Usage: %s filename r/w\n",argv[0]);
return 1;
}
int fd; // 文件描述符
if (argv[2][0] == 'r'){ // 读取文件
fd = open(argv[1],O_RDONLY); // 打开只读文件
} else if (argv[2][0] == 'w'){ // 写入文件
fd = open(argv[1],O_WRONLY); // 打开只写文件
} else { // 参数错误
printf("Invalid flag: %c \n",argv[2][0]);
return 1;
}
if (fd == -1){ // 检查文件是否打开成功
perror("open");
return 1;
}
char buf[100]; // 定义缓冲区
if (argv[2][0] == 'r'){ // 读取文件
int n = read(fd, buf, sizeof(buf)); // 读取文件内容
if(n == -1){ // 检查是否读取成功
perror("read");
return 1;
}
buf[n] = '\0'; // 在缓冲区末尾添加字符串结束标志
printf("read from file: %s\n",buf); // 打印读取到的文件内容
} else{ // 写入文件
sprintf(buf,"20009201099 %s","MYFILE"); // 格式化字符串
int n = write(fd, buf, sizeof(buf)); // 将缓冲区内容写入文件
if (n == -1){ // 检查是否写入成功
perror("write");
return 1;
}
printf("write to file successfully\n"); // 写入成功,打印信息
}
if (close(fd) == -1){ // 关闭文件
perror("close");
return 1;
}
return 0;
}
```
阅读全文