Unix 将文件导入stdin并保持活动状态,等待新数据
我是UNIX管道的半新手,如果我在这里问任何明显的问题,我深表歉意。我正在使用一个名为的程序从视频文件中获取隐藏的字幕。它可以选择从stdin接收文件,如果我执行以下操作,效果会非常好:Unix 将文件导入stdin并保持活动状态,等待新数据,unix,pipe,Unix,Pipe,我是UNIX管道的半新手,如果我在这里问任何明显的问题,我深表歉意。我正在使用一个名为的程序从视频文件中获取隐藏的字幕。它可以选择从stdin接收文件,如果我执行以下操作,效果会非常好: ./ccextractor -stdin < myvideofile.wtv 应该可以工作——但它根本不处理视频的任何部分(至少它应该可以像前面的命令一样工作并解析现有数据)。我想我应该退一步,用一个简单的猫: cat myvideofile.wtv | ./ccextractor -stdin 这也
./ccextractor -stdin < myvideofile.wtv
应该可以工作——但它根本不处理视频的任何部分(至少它应该可以像前面的命令一样工作并解析现有数据)。我想我应该退一步,用一个简单的猫:
cat myvideofile.wtv | ./ccextractor -stdin
这也不管用。我相信第一个和第三个命令应该大致相同,但事实显然并非如此。区别是什么,我如何才能让它工作?使用tail
方法应该可以工作,但是要确保写入视频文件的内容都是定期刷新的。在这种情况下,我实际上是在使用一个完整的文件,只是为了证明这个概念。tail命令应该将整个文件导入ccextractor
,对吗?正确。ccextractor
是处理流式数据还是缓冲其输出?我不确定到底是什么导致了这种差异。您的cat尝试消除了刷新和阻塞读取的任何可能性。无论哪种方式,Stdin都将是一条流。使用Cextractor上的strace,尝试查看管道中的内容,以防出现问题?
cat myvideofile.wtv | ./ccextractor -stdin