永发信息网

在linux上单独执行屏幕有输出,重定向后没有任何输出了。 myprog > 1.log 或 myprog | tee 1.log

答案:4  悬赏:50  手机版
解决时间 2021-11-15 11:50
  • 提问者网友:骨子里的高雅
  • 2021-11-14 19:27
在linux上单独执行屏幕有输出,重定向后没有任何输出了。 myprog > 1.log 或 myprog | tee 1.log
最佳答案
  • 五星知识达人网友:毛毛
  • 2021-11-14 21:06
单独的重定向操作会隐藏原来的输出,可以配合 tee 命令来使用,具体用法请百度,简单用例如下
输出到 1.log
myprog | tee 1.log追加到 1.log

myprog | tee -a 1.log追问就是有问题啊,单独执行屏幕上有输出,用了重定向,屏幕和文件都没有输出了。
其他程序是可以的。而且用了2 >&1
大概是什么原因?追答抱歉,么仔细看题目,原来已经用了 tee 了啊。。难道 myprog 编程时不是用的标准输出?追问有哪些可以打印到屏幕的情况?有可能不是标准输出,但是确实可以显示到屏幕上追答对这个没什么研究,等下看是否有大神吧。我觉得如果程序直接操作输出缓冲区就能跳过标准设备,老早之前在DOS时代的时候,也有很多非字符的游戏,就是这么做的。追问没有cout<学习了!同样感谢您能回来告知原因。
全部回答
  • 1楼网友:不甚了了
  • 2021-11-14 23:15
可能是后面的指令被程序当作参数读取了,然后工作不正常。
  • 2楼网友:旧脸谱
  • 2021-11-14 21:46
你重定向了当然没有输出了
查看你的1.log文件看看里面的内容
还有你的mypro程序是自己写的吧
标准输出由于缓冲区的原故在重定向时会等到缓冲区满后才会写入
所以你的mypro程序执行完后再看看你的1.log文件
  • 3楼网友:一袍清酒付
  • 2021-11-14 21:18
我们知道linux有三种主要的文件描述符 STDIN=0(标准输入,一般指键盘)、STDOUT=1(标准输入,一般指显示器)、STDERR=2(标准错误,一般也指向显示器)。
正常来说myprog将把输出指向STDOUT上,但是你使用了重定向命令,也就是[>]和[<],就将标准输出的内容导入到1.log上,标准输出原来的默认输出定向显示器将得不到任何信息,但是这时如果出现错误,STDERR还指向显示器,因此错误还将出现在显示器上。
你的这两个语句相当于 myprog 1>1.log,把标准输出导向到1.log。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯