2.采用dup/dup2/fcntl复制一个新的文件描述符,通过新文件描述符向文件写入“class_name”字符串;
3.通过原有的文件描述符读取文件中的内容,并且打印显示;
源代码:
#include<string.h>
#include<fcntl.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
int main()
{
int t1;
t1 =open("file",O_RDWR|O_CREAT,00007);
int t2;
t2=dup(t1);
char str[30];
char name[30]="yunjisuanerban_fengtianbo";
lseek(t2,0,SEEK_SET);
write(t2,name,30);
lseek(t1,0,SEEK_SET);
read(t1,str,30);
printf("%s",str);
close(t1);
return 0;
}
dup()系统调用:
功能
复制文件描述符
头文件
#include <unistd.h>
函数原型
int dup(int oldfd);
传给该函数一个现有描述符,返回一个新的描述符
新描述符是传给它的描述符的拷贝,即两描述符共享同一数据结构
如果对一个文件描述符执行lseek操作,得到的第一个文件的位置和第二个是一样的
返回值
成功时返回新文件描述符
否则-1
dup2()系统调用
功能
复制文件描述符
头文件
#include <unistd.h>
函数原型
int dup2(int oldfd, int newfd);
允许规定一个有效描述符( oldfd )和目标描述符( newfd )
目标描述符将变成源描述符的复制品,即两个文件描述符指向同一文件,且是源描述符指向的文件
返回值
成功时返回新文件描述符
否则-1