我在Java中编写一个命令行实用程序,它使用stdin或写入标准输出,具体取决于使用system.in.available()是否存在标准input上的数据:
public class MyUtility { public static voID main(String args[]) { if(system.in.available() > 0) consumeFromStdin(); else producetoStdout(); } // ... }
我正在使用system.in.available()检查来避免使用命令行参数,以使 *** 作模式依赖于它在shell中的使用方式(例如, java MyUtility | more vs. echo testing | java MyUtility )。
到目前为止,这在Mac命令行中运行良好; 在system.in.available()被调用的时候,stdin的可用性一直存在。 我的问题是:是否有可能,甚至在调用公用程序时也是如此
java MyUtility < input.txt
system.in.available()在这里可能会返回0?
最高cpu使用率的进程名称
文件系统是否将存储设备视为(非常大)的字节数组?
修复403 ForbIDden别名目录与Apache
CMake / CPack:不同平台的首选包生成器
获取windows版本的batch file
当然,我希望这可以用于所有的JVM实现,shell和 *** 作系统。 windows,Mac和linux在生成进程时,是否提供了对stdin数据可用性的不同(任何?)保证? 而且,即使 *** 作系统保证了数据的可用性,JVM是否也有保证这些数据的发言权呢? 做shell(即ksh,csh,PowerShell等)是否起作用?
linux下键盘事件处理的内部工作
如何在C中列出进程的所有文件描述符,而不用调用lsof或parsing/ proc / $ PID
任何人都可以告诉我如何以及他们如何在标题栏上5button而不是3最大,resize,在windows中closures?
你如何确定你正在运行最新的可执行文件?
进程间通信(IPC)
进程间通信独立于shell而存在。 标准输入和标准输出是外壳使用的 *** 作系统机制,但不创建。 非shell的进程始终使用它们。
我不太了解available()方法的规范,但是如果你在windows上执行一个快速检查并且它可以工作,其余的 *** 作系统大部分是UNIX风格的,我认为很可能将无处不在。
总结以上是内存溢出为你收集整理的标准input可用性(竞争条件?)全部内容,希望文章能够帮你解决标准input可用性(竞争条件?)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)