admin管理员组文章数量:1130349
STDOUT
在重定向之前保存默认文件描述符,在向text文件写入后再还原STDOUT_FILENO描述符
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
int main(int argc, char* argv[])
{int sfd,ret;sfd=dup(STDOUT_FILENO); //保存屏幕输出的文件描述符,用于恢复int fd=open("text.txt", O_CREAT|O_RDWR|O_TRUNC, S_IRUSR|S_IWUSR);if(fd < 0){printf("Open Error!\n");return 0;}printf("-------\n");sleep(1);dup2(fd,STDOUT_FILENO); //修改默认屏幕输出指向printf("write to text by STDOUT_FILENO\n");dup2(sfd,STDOUT_FILENO); // 还原屏幕输出默认文件描述符指向printf("STDOUT_FILENO come back\n");char buf[1000];int n;while((n=read(STDIN_FILENO, buf,1000)) > 0) //接受键盘输入,并将其存入buf所指向的缓存中 {if(write(fd, buf, n)<n) //将buf所指向的缓存区的n个字节的数据写入到由文件描述符fd2所指示的文件中{printf("Write Error!!\n");return 0;}}return 0;
}
STDOUT
在重定向之前保存默认文件描述符,在向text文件写入后再还原STDOUT_FILENO描述符
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
int main(int argc, char* argv[])
{int sfd,ret;sfd=dup(STDOUT_FILENO); //保存屏幕输出的文件描述符,用于恢复int fd=open("text.txt", O_CREAT|O_RDWR|O_TRUNC, S_IRUSR|S_IWUSR);if(fd < 0){printf("Open Error!\n");return 0;}printf("-------\n");sleep(1);dup2(fd,STDOUT_FILENO); //修改默认屏幕输出指向printf("write to text by STDOUT_FILENO\n");dup2(sfd,STDOUT_FILENO); // 还原屏幕输出默认文件描述符指向printf("STDOUT_FILENO come back\n");char buf[1000];int n;while((n=read(STDIN_FILENO, buf,1000)) > 0) //接受键盘输入,并将其存入buf所指向的缓存中 {if(write(fd, buf, n)<n) //将buf所指向的缓存区的n个字节的数据写入到由文件描述符fd2所指示的文件中{printf("Write Error!!\n");return 0;}}return 0;
}
本文标签: stdout
版权声明:本文标题:STDOUT 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1699675970a303474.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论