多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 服務(wù)器 > Linux 下的 dup 和 dup2 函數(shù)簡介

Linux 下的 dup 和 dup2 函數(shù)簡介

來源:程序員人生   發(fā)布時(shí)間:2013-10-26 02:43:41 閱讀次數(shù):3750次
dup 和 dup2 都可以用來復(fù)制一個(gè)現(xiàn)存的文件描述符。經(jīng)常用來重新定向進(jìn)程的 STDIN, STDOUT, STDERR。

dup 函數(shù)
dup 函數(shù)定義在 <unistd.h> 中,函數(shù)原形為:

int dup ( int filedes ) ;
函數(shù)返回一個(gè)新的描述符,這個(gè)新的描述符是傳給它的描述符的拷貝,若出錯(cuò)則返回 -1。由dup返回的新文件描述符一定是當(dāng)前可用文件描述符中的最小數(shù)值。這函數(shù)返回的新文件描述符與參數(shù) filedes 共享同一個(gè)文件數(shù)據(jù)結(jié)構(gòu)。

使用例子:

#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

int main( int argc, char* argv[] ){
int fd= open( "/home/darren/data.dat", O_CREAT| O_RDWR| O_TRUNC, S_IRUSR| S_IWUSR );
if( fd< 0 ){
printf("Open Error!!");
return 0;
}

int nfd= dup( fd );
if( nfd< 0 ){
printf("Error!!");
return 0;
}

char buf[1000];
int n;

while( (n= read( STDIN_FILENO, buf, 1000 ))> 0 )
if( write( nfd, buf, n )!= n ){
printf("Write Error!!");
return 0;
}

return 0;
}

上面代碼中,nfd 拷貝了 fd,所以 write ( nfd, buf, n ) 這語句寫到 nfd 所代表的文件時(shí)也就是寫到 fd 所代表的文件。程序執(zhí)行完后可以在相應(yīng)的目錄的 data.dat 看到輸出。

dup2 函數(shù)
dup2 函數(shù)定義在 <unistd.h> 中,函數(shù)原形為:

int dup2( int filedes, int filedes2 )
同樣,函數(shù)返回一個(gè)新的文件描述符,若出錯(cuò)則返回 -1。與 dup 不同的是,dup2 可以用 filedes2 參數(shù)指定新描述符的數(shù)值。如果 filedes2 已經(jīng)打開,則先將其關(guān)閉。如若 filedes 等于 filedes2 , 則 dup2 返回 filedes2 , 而不關(guān)閉它。同樣,返回的新文件描述符與參數(shù) filedes 共享同一個(gè)文件數(shù)據(jù)結(jié)構(gòu)。

使用例子:

#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

int main( int argc, char* argv[] ){
int fd= open( "/home/darren/data.dat", O_CREAT| O_RDWR| O_TRUNC, S_IRUSR| S_IWUSR );
if( fd< 0 ){
printf("Open Error!!");
return 0;
}

int nfd= dup2( fd, STDOUT_FILENO );
if( nfd< 0 ){
printf("Error!!");
return 0;
}

char buf[1000];
int n;

while( (n= read( STDIN_FILENO, buf, 1000 ))> 0 )
if( write( STDOUT_FILENO, buf, n )!= n ){
printf("Write Error!!");
return 0;
}

return 0;
}

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 五月天婷五月天综合网在线 | 欧美一级特黄做 | 牛牛精品国内免费一区 | 另类亚洲孕妇分娩网址 | 欧美日本黄色片 | 成 人 a v免费视频 | 国产亚洲免费观看 | h网站在线免费观看 | 国产精品视频久久 | 精品中文字幕一区二区三区四区 | 在线观看亚洲 | 国产在线成人一区二区 | 亚洲精品视频在线 | 亚欧成人毛片一区二区三区四区 | 天堂欧美 | 亚洲免费在线视频播放 | 亚洲第一免费网站 | 国产区精品福利在线观看精品 | 国产精品国产亚洲精品看不卡 | 黄色a一级 | 久久亚洲欧美综合激情一区 | 欧美一级久久久久久久大片动画 | 美女免费视频是免费网站 | 免费视频网站在线看视频 | 草的好爽 | 国产激情久久久久影 | 目韩一区二区三区系列片丶 | 秋霞免费一级毛片 | 久久久久亚洲国产 | 中文字幕第一页在线 | 女性一级全黄生活片 | 久久99精品久久久久久综合 | 亚洲国产天堂久久综合2261144 | 伊人网在线观看 | yellow影院在线观看免费 | 在线看的黄色网址 | 精品在线免费观看 | 国产成人免费视频 | 亚洲精品永久免费 | 亚洲精品在线视频 | 国产亚洲第一 |