日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > Linux 下的 dup 和 dup2 函數簡介

Linux 下的 dup 和 dup2 函數簡介

來源:程序員人生   發布時間:2013-10-26 02:43:41 閱讀次數:3757次
dup 和 dup2 都可以用來復制一個現存的文件描述符。經常用來重新定向進程的 STDIN, STDOUT, STDERR。

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

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

使用例子:

#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 所代表的文件時也就是寫到 fd 所代表的文件。程序執行完后可以在相應的目錄的 data.dat 看到輸出。

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

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

使用例子:

#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;
}

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品一区精品二区 | 亚洲视频中文 | 久久国产精品区 | 久久国产成人 | 国产男女av| 丰满少妇高潮惨叫久久久久 | 日韩欧美区 | 色呦呦视频在线观看 | а天堂中文最新一区二区三区 | 国产精品久久久久久久久久久新郎 | 久久精品视频在线播放 | 日韩视频一区二区 | 日韩欧美在线免费观看 | 免费高清av| 成人黄色av网站 | 欧美xxxx黑人又粗又长密月 | 久久99久久精品 | 玖玖玖国产精品 | 色69av| 毛片一区二区三区 | 可以在线观看的av | 啪啪av大全导航福利综合导航 | 亚洲国产视频一区 | 国产中文字幕精品 | 日本福利在线 | 国产精品精品视频一区二区三区 | 欧美国产在线观看 | 中文字幕偷拍 | 国产精品一区二区久久久久 | 成人自拍视频在线 | 国产精品久久久久久久久久三级 | 美女视频黄色免费 | 尤物国产| 狠狠涩 | 成人福利一区 | 九九热精品视频 | 人人干天天干 | 国产一区二区三区在线 | 香蕉久久久精品 | 亚洲综合第一页 | 亚洲国产精品久久久久久 |