- 論壇徽章:
- 0
|
本帖最后由 centos_71 于 2015-02-02 20:43 編輯
dup函數(shù)只有一個(gè)參數(shù),也就是輸入一個(gè)fd,可是沒(méi)有另外一個(gè)參數(shù)說(shuō),要把這個(gè)fd復(fù)制給誰(shuí)?
下面這個(gè)小程序,調(diào)用fd的結(jié)果是,打開(kāi)的一個(gè)文件fd被復(fù)制到了標(biāo)準(zhǔn)輸出,以至于execl調(diào)用的打印內(nèi)容,被重定向到了文件當(dāng)中。
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- int main(void){
- int filedes;
- if((filedes=open("dd.txt",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))<0)
- fprintf(stderr,"%s ","open file error");
- close(1);
- dup(filedes);
- close(filedes);
- execlp("ls","-l",(char * )0);
- return 0;
- }
復(fù)制代碼 所以看起來(lái)dup程序就是要復(fù)制一個(gè)fd到stdout。是這樣的嗎,如果我要dup到stdout以外的fd怎么辦呢? |
|