如何解决是否可以使用 tee 捕获标准输入?
当我通过管道将程序传送到 scanf(...)
函数时,是否可以从 tee
捕获输入?例如,我有这个程序:
int main() {
int d;
printf("Enter a number: ");
scanf("%d",&d);
printf("Your number is %d\n",d);
}
当我执行命令 ./a.out | tee out.txt
时,我看到
7
Enter a number: Your number is 7
而 out.txt
是:
Enter a number: Your number is 7
如何让终端和输出文件同时显示:
Enter a number: 7
Your number is 7
解决方法
如果要捕获终端会话,请使用 script
。例如:
$ cat a.c
#include <stdio.h>
int
main(void)
{
int d;
printf("Enter a number: ");
if( scanf("%d",&d) == 1 ){;
printf("Your number is %d\n",d);
}
return 0;
}
$ gcc a.c
$ rm -f foo
$ SHELL=/bin/sh script foo
Script started,output file is foo
sh-3.2$ ./a.out
Enter a number: 5
Your number is 5
sh-3.2$ exit
exit
Script done,output file is foo
$ cat foo
Script started on Wed Apr 7 16:48:03 2021
sh-3.2$ ./a.out
Enter a number: 5
Your number is 5
sh-3.2$ exit
exit
Script done on Wed Apr 7 16:48:13 2021
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。