fcntl函式實現dup
fcntl函式的定義
fcntl(file control),對檔案描述符提供各種各樣的控制操作,fcntl是POSIX規範指定的首選方法。
函式的定義:
#include <fcntl.h>
int fcntl(int fd,int cmd,…)
引數1:被操作檔案的檔案描述符
引數2:指定執行何種操作
引數3 可選引數
用fcntl實現dup的功能
int newfd=fcntl(int oldfd, FDUPFD,int new fd)
引數一:需要指向的oldfd
引數二:命令
引數三:新的檔案描述符
如果新指定的檔案描述符已經被佔用的話,那麼就使用當前可用的最小的檔案描述符
如果沒有被佔用,那麼就使用指定的檔案描述符。
案例:
1.開啟一個檔案
2利用fcntl將5號檔案描述符重定向到開啟的檔案
3.向開啟的檔案中寫入test
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
int main()
{
int fd =open("./test.txt",O_RDWR|O_CREAT,0644);
if(fd==-1)
{
perror("open error");
}
int newfd=fcntl(fd,F_DUPFD,5); //將5號檔案描述符重定向到fd
printf("newfd=%d\n",newfd);
int ret= write(newfd,"test",4);
printf("ret=%d\n",ret);
return 0;
}
相關文章
- fcntl函式用法詳解函式
- 檔案鎖fcntl()函式的使用函式
- dup函式:複製檔案描述符函式
- linux系統程式設計之檔案與IO(八):檔案描述符相關操作-dup,dup2,fcntlLinux程式設計
- 用fcntl()設定阻塞函式的阻塞性質函式
- (函式)實現strstr函式函式
- 通過socket實現DUP程式設計程式設計
- MySQL排名函式實現MySql函式
- MySQL分析函式實現MySql函式
- Linux系統程式設計(3)——檔案與IO之fcntl函式Linux程式設計函式
- JavaScript的迭代函式與迭代函式的實現JavaScript函式
- 函式節流、函式防抖實現原理分析函式
- async 函式的實現原理函式
- 去抖函式的實現函式
- Golang實現PHP常用函式GolangPHP函式
- Go實現PHP常用函式GoPHP函式
- bind 函式的實現原理函式
- mysql實現開窗函式MySql函式
- atoi函式簡單實現函式
- 實現c中memcpy函式memcpy函式
- 【面試】shuffle函式的實現面試函式
- js實現函式過載JS函式
- 實現call函式,手寫Function.prototype.call函式函式Function
- 使用函式式實現觀察者模式模式函式模式
- (函式分治法)實現pow函式(x的y次方冪)函式
- 不使用日期函式實現ADD_MONTHS函式功能函式
- 一個有用的函式-實現dump函式的convert!函式
- Vue元件實現函式防抖Vue元件函式
- Vue實現函式防抖元件Vue函式元件
- 函式實現閏年判斷函式
- PHP中實現函式過載PHP函式
- PHP內建字串函式實現PHP字串函式
- 虛擬函式的實現原理函式
- 巧妙地實現 debugOnly 函式Go函式
- Golang之不可重入函式實現Golang函式
- 字串相關函式的實現字串函式
- 三種方法實現strlen函式函式
- javascript函式過載的實現JavaScript函式