linuxc 高級編程之文件操作2

1.創建新文件,該文件具有用戶讀寫權限。
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章