- 论坛徽章:
- 0
|
本帖最后由 centos_71 于 2015-02-02 20:43 编辑
dup函数只有一个参数,也就是输入一个fd,可是没有另外一个参数说,要把这个fd复制给谁?
下面这个小程序,调用fd的结果是,打开的一个文件fd被复制到了标准输出,以至于execl调用的打印内容,被重定向到了文件当中。
- #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;
- }
复制代码 所以看起来dup程序就是要复制一个fd到stdout。是这样的吗,如果我要dup到stdout以外的fd怎么办呢? |
|