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函式用法詳解函式
- MySQL分析函式實現MySql函式
- MySQL排名函式實現MySql函式
- JavaScript的迭代函式與迭代函式的實現JavaScript函式
- 去抖函式的實現函式
- bind 函式的實現原理函式
- 巧妙地實現 debugOnly 函式Go函式
- js實現函式過載JS函式
- async 函式的實現原理函式
- Golang實現PHP常用函式GolangPHP函式
- Go實現PHP常用函式GoPHP函式
- 實現call函式,手寫Function.prototype.call函式函式Function
- Vue元件實現函式防抖Vue元件函式
- Vue實現函式防抖元件Vue函式元件
- 虛擬函式的實現原理函式
- 函式實現閏年判斷函式
- Golang之不可重入函式實現Golang函式
- 用匯編實現add函式函式
- PHP內建字串函式實現PHP字串函式
- 字串相關函式的實現字串函式
- 三種方法實現strlen函式函式
- python中實現函式過載Python函式
- strlen函式的模擬實現函式
- PHP中實現函式過載PHP函式
- ObjectC Hook函式的實現與實戰ObjectHook函式
- 使用函式式方式實現責任鏈模式函式模式
- 使用函式式實現觀察者模式模式函式模式
- add(1)(2)(3)...函式的實現函式
- c++字串查詢函式實現C++字串函式
- js中實現單分派泛函式JS函式
- JS 分步實現柯里化函式JS函式
- 前端--任意數求和(有名函式實現)前端函式
- 在 Python 中實現函式過載Python函式
- MySQL空間函式實現位置打卡MySql函式
- 二分查詢(函式實現)函式
- PHP 自己實現var_dump函式PHP函式
- 利用指標實現strncmp函式功能指標函式
- 用Map+函式式介面來實現策略模式函式模式