不了解stdout语义
发布时间:2020-12-16 09:39:41 所属栏目:百科 来源:网络整理
导读:这里有新手! 我下面的程序试图在Linux中扮演(一点点)cat命令. 如果没有提供参数,则它从用户获取输入并在屏幕上打印.(对于非常简单的场景,假设输入缓冲区为10). 如果我传递多个参数它正在工作……即.它逐个显示不同文件的内容 – 编程.. – 现在重点是,当我
这里有新手!
我下面的程序试图在Linux中扮演(一点点)cat命令. >如果没有提供参数,则它从用户获取输入并在屏幕上打印.(对于非常简单的场景,假设输入缓冲区为10). – 现在重点是,当我在shell上发出命令时:
其中mycat是我的程序名称,abc.txt是必需的文件,我将其重定向到新的文件测试. int main(int argc,char *argv[]) { char buf[10]; int x,read_bytes,i,fd; read_bytes=1; char read_buf[1024*1024]; for(i=0;i<argc;i++) printf("you entered %sn",argv[i]); //this printf switch(argc) { case 1: x=read(0,buf,sizeof(buf)); write(1,x); break; default: for(i=1;i<argc;i++) { printf("showing the %dth filenn",i); fd=open(argv[i],O_RDONLY); if(fd==-1) { perror("no file opened for such name"); exit(1); } while(read_bytes!=0) { read_bytes=read(fd,read_buf,sizeof(read_buf)); if(read_bytes==-1) { perror("not able to readn"); exit(2); } write(1,read_bytes); } read_bytes=1; close(fd); } break; } return 0; } 解决方法
printf还打印到stdout,其文件描述符为1,因此您将printf行写入与文件内容相同的输出.
您可能更喜欢将诊断写入单独的输出,例如stderr: fprintf(stderr,"Hello world.n"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |