PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

求“标准输入输出”对这段英文的准确翻译

[复制链接]
跳转到指定楼层
1#
haierccc 发表于 2019-8-27 19:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:3573|回复数:2
本帖最后由 haierccc 于 2019-8-27 20:07 编辑

我在学习一款网络小工具Ncat,最近正在把它的官方帮助翻译成中文。
配合谷歌和百度翻译,倒也八九不离十。
其中百度翻译有点特别,直接翻译网页,和单独翻译文本,其结果居然是不一样的,后者明显完成度更高,更容易理解。
Ncat这款软件,可以配合其它软件,再配合管道符,能实现端口转发等功能,例如如下命令行:
ncat -l|7za x -tgzip -bd -y -si -so|tar -xvf - -C /tmp
意思是:把ncat得到的输出,输入给7za,再把7za的输出,输入给tar,tar再输出到文件。
这3个程序本来是毫不相关的,但它们被操作系统的“标准输入“和”标准输出”联系到一起,上一个程序的输出成为下一个程序的输入,于是可以协同发挥作用。
但这里有个条件:这些程序要及时处理“标准输入”和“标准输出”。
假如说,这里有个捣蛋鬼“tar”,它得到的输入并不会马上处理,而是放入“读缓冲区”,直到读缓冲区满才处理。
或者说,tar的输出也不会马上写入“标准输出”,直到先写到“写缓冲区”,直到写满才会输出。
这样一来,tar就会拖累另外2个程序,一直等着tar处理。如果它不处理,就一直处于挂起状态。
以上是这段英文的背景。


英文原文如下:
Any program that takes input and produces output can be executed by Ncat, but not all programs are suited to this kind of interaction. Many programs buffer their input and output, so if they receive some bytes, they many not process those bytes and write output until their input buffer is full, or the output may be deferred until the output buffer is full. If another program sends a few bytes and then waits for a response, it may hang indefinitely. Buffers are flushed when input or output ends, so even those programs that don't work interactively will work when run on an entire file at a time.


对比了谷歌翻译和百度翻译,我总结的译文如下:
任何接受输入并产生输出的程序都可以由Ncat执行,但并非所有程序都适合这种交互。许多程序把它们的输入和输出放入缓冲区,因此,如果接收到一些字节,很多程序都不会处理这些字节并立即写入输出,直到它们的输入缓冲区满;或者输出可能会延迟直到输出缓冲区满。 此时如果另一个程序发送几个字节然后等待响应,它可能会无限期挂起。缓冲区在输入或输出结束时刷新,使得那些不能以交互方式工作的程序也可以在一次运行整个文件时工作。

我感觉这段译文应该没啥问题,除了倒数的这一行:
缓冲区在输入或输出结束时刷新,使得那些不能以交互方式工作的程序也可以在一次运行整个文件时工作。
很明显这句话翻译得有问题,我理解的意思是不是说,如果在编程时按照“一旦接收到输入,就立刻处理,并立刻输出”的思路编写,那么原来各自独立的一些程序,就可以通过管道符连接到一起并相互配合,在一个命令行内完成工作。

如果我理解正确的话,“文件-file”这个单词在这里又是啥意思呢?
谢谢。






2#
StormBolt 发表于 2019-8-27 20:27 | 只看该作者
先只看英文,第一感觉和译文一样,再看一遍发现问题了,再再看,果然只看译文是无法理解的。。。

如果输入Bytes时会有缓冲区问题,如果输入一个完整的File就不会有这个问题的意思,Bytes和File的区别。打个比方就是一个一百行命令的批处理文件,一行一行地输入,会有一些过程变量,如果被缓存了最终结果可能会不对,但如果一次性处理每十行,结果又会不同,当一次性处理全部一百行的时候,将不会存在过程变量、暂存数、中间数等等概念的内容被改变的可能。
没有上下文,只能大概这样理解。
3#
haierccc  楼主| 发表于 2019-8-27 21:31 | 只看该作者
StormBolt 发表于 2019-8-27 20:27
先只看英文,第一感觉和译文一样,再看一遍发现问题了,再再看,果然只看译文是无法理解的。。。

如果输入 ...

关于缓冲区的输入输出,其实官方说明里也就是这一段说明了。
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部