真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linuxdup命令 linux du命令

ping后面出現(xiàn)DUP是什么意思

dup它有多種意義,包括Linux c 函數(shù)、C語(yǔ)言函數(shù)DUP、匯編指令、化學(xué)物質(zhì)DUP。

創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元德陽(yáng)做網(wǎng)站,已為上家服務(wù),為德陽(yáng)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

C語(yǔ)言函數(shù)DUP

函數(shù)簡(jiǎn)介

函數(shù)名: _dup

功 能: 復(fù)制一個(gè)文件句柄

用 法: int _dup(int handle);

相關(guān)函數(shù):_dup2、fdopen、freopen、_mbsdup、_wcsdup、_strdup

擴(kuò)展資料:

匯編指令

dup 在匯編中是一條偽指令,用來(lái)重復(fù)初始化數(shù)據(jù)

用法舉例:

str1 db 10 dup ('!@#') ;這就是十個(gè)!@#

格式:db 重復(fù)的次數(shù) dup (重復(fù)的內(nèi)容)

化學(xué)物質(zhì)DUP

DUP是1,2-苯二甲酸二正十一酯,不溶于水,主要是作為增塑劑來(lái)使用的,溶于酯類。

參考資料??百度百科-DUP

linux下C語(yǔ)言編程,管道,dup,fork,疑問(wèn)的是,為什么連用那么多close?必須要close? 代碼如下

文件描述符0,1,2分別表示標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤輸出, 所以在子進(jìn)程里close(1)是關(guān)閉了標(biāo)準(zhǔn)輸出, 然后用dup(fda[1]);此時(shí)未用的最小文件描述符就是1(被關(guān)閉);這里關(guān)閉fda[0]就是為了說(shuō)明在子進(jìn)程是管道的寫端(fda[0],不關(guān)閉是可以的為了保險(xiǎn)起見(jiàn)關(guān)閉).然后子進(jìn)程退出會(huì)調(diào)用系統(tǒng)程序ls,于是當(dāng)前的文件目錄就被發(fā)送到管道中.父進(jìn)程同理, 就是將標(biāo)準(zhǔn)輸出作為管道的讀端,它讀到的是子進(jìn)程ls后的內(nèi)容,對(duì)文件計(jì)數(shù),

LINUX 標(biāo)準(zhǔn)錯(cuò)誤輸出重定向

用途:不掛斷地運(yùn)行命令。

語(yǔ)法:nohup Command [ Arg … ] [  ]

無(wú)論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當(dāng)前目錄的 nohup.out 文件中。

如果當(dāng)前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。

如果沒(méi)有文件能創(chuàng)建或打開(kāi)以用于追加,那么 Command 參數(shù)指定的命令不可調(diào)用。

退出狀態(tài):該命令返回下列出口值:

126 可以查找但不能調(diào)用 Command 參數(shù)指定的命令。

127 nohup 命令發(fā)生錯(cuò)誤或不能查找由 Command 參數(shù)指定的命令。

否則,nohup 命令的退出狀態(tài)是 Command 參數(shù)指定命令的退出狀態(tài)。

用途:在后臺(tái)運(yùn)行

一般兩個(gè)一起用

3.為什么呢 21 要寫在后面?

首先是command file將標(biāo)準(zhǔn)輸出重定向到file中, 21 是標(biāo)準(zhǔn)錯(cuò)誤拷貝了標(biāo)準(zhǔn)輸出的行為,也就是同樣被重定向到file中,最終結(jié)果就是標(biāo)準(zhǔn)輸出和錯(cuò)誤都被重定向到file中。

21 標(biāo)準(zhǔn)錯(cuò)誤拷貝了標(biāo)準(zhǔn)輸出的行為,但此時(shí)標(biāo)準(zhǔn)輸出還是在終端。file 后輸出才被重定向到file,但標(biāo)準(zhǔn)錯(cuò)誤仍然保持在終端。

用strace可以看到:

這個(gè)命令中實(shí)現(xiàn)重定向的關(guān)鍵系統(tǒng)調(diào)用序列是:

open(file) == 3

dup2(3,1)

dup2(1,2)

這個(gè)命令中實(shí)現(xiàn)重定向的關(guān)鍵系統(tǒng)調(diào)用序列是:

dup2(1,2)

open(file) == 3

dup2(3,1)

注意:0 是標(biāo)準(zhǔn)輸入(STDIN),1 是標(biāo)準(zhǔn)輸出(STDOUT),2 是標(biāo)準(zhǔn)錯(cuò)誤輸出(STDERR)。

這里的2和之間不可以有空格,2是一體的時(shí)候才表示錯(cuò)誤輸出。

Linux dup dup2函數(shù)理解

在linux中,我們需要復(fù)制文件描述符,下面是我對(duì)文件描述符的理解

int dup(int fd); // 復(fù)制一個(gè)已經(jīng)存在的文件描述符,如果成功,返回復(fù)制成功后的文件描述符,失敗返回-1

int dup(int fd, int fd2); // 復(fù)制一個(gè)文件描述符,fd表示已經(jīng)存在的打開(kāi)的文件描述符,fd2是指定新的文件描述符,如果fd2等于fd,則直接返回,如果fd2存在并且打開(kāi),則先close(fd2)后,重新打開(kāi),這樣fd2和fd就指向了同一個(gè)文件(共享打開(kāi)的文件),如果fd2不存在或者沒(méi)有打開(kāi),則打開(kāi)fd2,并且指向fd所指向的文件。函數(shù)的返回值和fd2一致。該函數(shù)可以實(shí)現(xiàn)文件的重定位。

每個(gè)進(jìn)程都有一個(gè)文件描述符表,每個(gè)描述符占用一個(gè)描述符項(xiàng),每個(gè)文件描述符可以描述成這樣

struct fileDescription {

int index;

void *pointer;

};

除了整形,還有一個(gè)指針,指向文件表,內(nèi)核為所有打開(kāi)文件維持一張文件表,每個(gè)文件表項(xiàng)包含:

1)文件狀態(tài)標(biāo)志(讀、寫、添寫、同步和非阻塞等)

2)當(dāng)前文件的偏移量

3)指向該文件v節(jié)點(diǎn)表項(xiàng)的指針

v節(jié)點(diǎn)表中包含了文件所有者、文件長(zhǎng)度、文件所在的設(shè)備、指向文件實(shí)際數(shù)據(jù)塊在磁盤上所在位置的指針等等

下面給出一個(gè)例子:

#include iostream

#include stdio.h

#include fcntl.h

#include sys/stat.h

#include unistd.h

#include string.h

using namespace std;

int main()

{

cout "Hello world!" endl;

int fd = open("a.txt", O_RDWR | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);

if (fd 0)

{

printf("open a.txt failed, fd = %d\n", fd);

return -1;

}

printf("open a.txt success, fd = %d\n", fd);

fflush(stdout);

// 復(fù)制標(biāo)準(zhǔn)輸出的文件描述符

int nfd = dup(STDOUT_FILENO);

int fileFd = dup2(fd, STDOUT_FILENO);

if (fileFd 0)

{

printf("dup2 stdout_fileno failed, fileFd = %d\n", fileFd);

return -1;

}

printf("重定向標(biāo)準(zhǔn)輸出到a.txt, fileFd = %d\n", fileFd);

// 將STDOUT_FILENO復(fù)制到fd后,fd并沒(méi)有發(fā)生變化,依然可以通過(guò)它寫入到a.txt中

const char *pStr = "write string through fd\n";

write(fd, pStr, strlen(pStr));

fileFd = dup2(nfd, fileFd);

if (fileFd 0)

{

printf("dup2 reback stdout_fileno failed\n");

return -1;

}

printf("print back to stdout standard, fileFd = %d\n", fileFd);

// 上面使用dup2的時(shí)候,STDOUT_FILENO是存在并打開(kāi)的,我們來(lái)測(cè)試下不存在的文件描述符的情況

fileFd = dup2(fd, 20);

if (fileFd 0)

{

printf("dup2不存在的文件描述符失敗, fileFd = %d\n", fileFd);

}

else

{

printf("dup2不存在的文件描述符成功, fileFd = %d\n", fileFd);

const char *pStr = "write string through fileFd\n";

write(fileFd, pStr, strlen(pStr));

}

close(nfd);

close(fileFd);

return 0;

}

文件指針是關(guān)鍵,標(biāo)志兩個(gè)文件描述符是否一致,看文件指針是否一致即可 ,如果兩個(gè)或者多個(gè)文件描述符指向同一個(gè)文件表,那么對(duì)他們的操作是對(duì)同一個(gè)文件進(jìn)行操作


分享文章:linuxdup命令 linux du命令
文章地址:http://weahome.cn/article/dopshhj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部