日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

11Linux服务器编程之:VFS虚拟文件系统,dup()函数和dup2()函数

發布時間:2024/9/27 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11Linux服务器编程之:VFS虚拟文件系统,dup()函数和dup2()函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1dup函數和dup2函數

#include<unistd.h>

int dup(intoldfd);

int dup2(intoldfd, int newfd);

?

dupdup2都可用來復制一個現存的文件描述符,使兩個文件描述符指向同一個file結構體。如果兩個文件描述符指向同一個file結構體,File Status Flag和讀寫位置只保存一份在file結構體中,并且file結構體的引用計數是2。如果兩次open同一文件得到兩個文件描述符,則每個描述符對應一個不同的file結構體,可以有不同的File Status Flag和讀寫位置。請注意區分這兩種情況。

#include <unistd.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(void)

{

int fd, save_fd;

char msg[] ="This is a test\n";

fd =open("somefile", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);

if(fd<0) {

perror("open");

exit(1);

}

save_fd =dup(STDOUT_FILENO);

dup2(fd,STDOUT_FILENO);

close(fd);

write(STDOUT_FILENO,msg, strlen(msg));

dup2(save_fd,STDOUT_FILENO);

write(STDOUT_FILENO,msg, strlen(msg));

close(save_fd);

return 0;

}

?

2VFS虛擬文件系統

?

關于函數調用的實質

總結:

A:操作磁盤上的文件,都要經過驅動。

B:只要兩個文件描述符指向的是同一個文件結構體,那么操作文件的時候就相當于在在文件后追加的過程,不會覆蓋文件內容。如果同時用open打開兩個文件,并且放回的兩個文件描述符之間沒有關聯,那么這時候操作的時候一個寫操作為覆蓋另外一個寫操作。

總結

以上是生活随笔為你收集整理的11Linux服务器编程之:VFS虚拟文件系统,dup()函数和dup2()函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。