其实就是这样:dup()或者dup2()主要是将某个特定的文件描述字输出输出的重定向!他们保证将复制的文件描述字到当前未打开的最小描述字!事例代码intfd;if(argc!=2){err_quit(" ");}if((fd=creat(argv[1],0644))<0){err_quit("createfilefailed");}close(1);dup(fd);close(fd);printf("whatareyouthinking???");这里你看,你先关掉了标准输出close(1),那么这个描述字就空闲着,你一旦dup就重定向到他了dup(fd),他们两共享同一个打开的文件表项,然后你将输出标准流到它现在指定的地方close(fd),也就是那个文件!然后printf直接输出到文件