题目如下:
v1.创建新文件,该文件具有用户读写权限。
v2.采用dup/dup2/fcntl复制一个新的文件描述符,通过新文件描述符向文件写入“class_name”字符串;
v3.通过原有的文件描述符读取文件中的内容,并且打印显示;
下面是代码:
#include<stdio.h>
#include<dirent.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
char str1[20] = "CLASS_NAME1";
char str2[40];
int fd2,bits;
int fd1 = open("file1.txt",O_RDWR|O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO);
fd2 = fcntl(fd1,F_DUPFD);
printf("%d\n",fd2);
bits = write(fd2,str1,11);
printf("%d\n",bits);
lseek(fd1,SEEK_SET,0);
bits = read(fd1,str2,11);
printf("%d\n",bits);
for(int i=0;i<12;i++)
printf("%c ",str2[i]);
printf("\n");
return 0;
}
知识点与作业1类似,新加的有fcntl(){ 可以利用dup(),dup2(),效果相同},为文件添加一个新的文件描述符,不影响源文件描述符的使用。
注意:
字符串相关数组不要开的太大,否则在读写文件过程中会有脏数据的影响。