Ssh 可以调用printf()块吗?
printf()在流控制和缓冲方面是如何工作的?printf()是否保证在合理的时间内返回,或者是否会阻止它,直到它真正能够将某些内容写入stdout 我在考虑SSH连接速度慢之类的问题。这真的能在printf()上减慢某些程序的速度吗?这种情况会立即发生,还是只有在某些缓冲区(stdout的某些内部缓冲区,甚至可能是TCP发送缓冲区)被填满后才会发生?除了可能增加延迟和降低输出速度之外,使用SSH还有其他区别吗 如果是,如何规避?线程是该问题的常见解决方案,还是有更简单的方法来设置标志或调用stdout以切换到“非阻塞模式”?或者我是否有一些关于Unix I/O工作原理的基本事实是完全错误的,并且这个问题没有任何意义?:) 我这样问主要是出于兴趣,但最近在使用C和shell进行实验的过程中,有两次出现了这个问题,我想知道一般应该在哪里以及如何解决这个问题:Ssh 可以调用printf()块吗?,ssh,terminal,stdout,Ssh,Terminal,Stdout,printf()在流控制和缓冲方面是如何工作的?printf()是否保证在合理的时间内返回,或者是否会阻止它,直到它真正能够将某些内容写入stdout 我在考虑SSH连接速度慢之类的问题。这真的能在printf()上减慢某些程序的速度吗?这种情况会立即发生,还是只有在某些缓冲区(stdout的某些内部缓冲区,甚至可能是TCP发送缓冲区)被填满后才会发生?除了可能增加延迟和降低输出速度之外,使用SSH还有其他区别吗 如果是,如何规避?线程是该问题的常见解决方案,还是有更简单的方法来设置标志或调用s
- 当开发一个可能向终端输出大量数据以进行调试或获取信息的应用程序时,终端速度变慢是否会导致性能问题?作为一名程序员,我应该避免像(对于y中的每个x:print y)这样的大型列表的构造吗
- 或者这是一个应该由应用程序用户而不是开发人员通过将输出重定向到文件等来处理的问题。?如果是这样的话,是否有任何有用的shell习惯用法可以将程序输出与实际执行分离,比如
(我不确定这个特定的示例是否真的会改变什么,但cat可以被更复杂的东西所取代)mytool | cat
printf()
可能会被阻止。一个例子是stdout
连接到另一端带有慢速读取器的管道
这是否是一个问题或如何最好地缓解它实际上取决于应用程序的性质,以及为什么它首先是一个问题。这主要是出于兴趣,受一些C和输入/输出重定向实验的推动。我在我的问题中补充了这一点。