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