使用dup dup2進行檔案描述符重定向

2021-08-02 05:24:00 字數 1015 閱讀 5791

當乙個程序執行時,會有相應的檔案描述符(linux一切皆檔案),一般會有3個預設的檔案描述符:

0:與標準輸入關聯

1:與標準輸出關聯

2:與標準錯誤輸出關聯

dup\dup2函式,對檔案描述符重定向

close(1);//關閉要重定向的檔案描述符

dup(fd,1);//將標準輸出重定向到開啟的檔案

dup2(fd,1);//將開啟的檔案fd複製到標準輸出1

**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

static

void use(const

char* proc)

int main(int argc,char* argv)

int sock = socket(af_inet,sock_stream,0);

if(sock<0)

close(1);

dup(sock);

//dup2(sock,1);

struct sockaddr_in peer;

peer.sin_family = af_inet;

peer.sin_port = htons(atoi(argv[2]));

peer.sin_addr.s_addr = inet_addr(argv[1]);

if(connect(sock,(struct sockaddr*)&peer,sizeof(peer))<0)

char buf[1024];

while(1)}}

close(sock);

return

0;}

dup,dup2函式,複製檔案描述符

dup 和 dup2 都可以用來複製乙個現存的檔案描述符。經常用來重新定向程序的 stdin,stdout,stderr include int dup int oldfd int dup2 int oldfd,int newfd 這兩個函式我們可以用來複製檔案描述符。其中oldfd和newfd分別...

檔案描述符的重定向 dup dup2

dup dup2 進行檔案描述符的重定向即建立乙個oldfd的副本。dup 最低編號 未被使用的檔案描述符是oldfd的乙份拷貝。dup2 newfd是oldfd的乙份拷貝。返回值 成功 newfd 失敗 1 基於tcp的socket程式設計 以基於tcp的socket程式設計中的多執行緒伺服器為例...

使用dup,dup2重定向的試驗

想在bash修改版 中得到執行使用者輸入命令後的回顯資料,沒調通。管道中沒有資料,應該是找到的fd不對。bash 執行使用者輸入的命令後,具體命令回顯用的是重定向。重定向用linuxc實現時,用的是dup和dup2.從頭做個試驗,體會一下dup和dup2的效果。本來可以在sshd 中嘗試得到回顯,因...