我试图弄清楚如何获取用于运行Java脚本的文件的名称。我使用java Test < input.txt
运行程序,但是当我尝试使用wmic获取java.exe的命令行时,我得到的输出仅为java Test
。还有其他方法吗?
答案 0 :(得分:1)
在编写java Test < input.txt
时,您要编写的shell将执行2个操作:首先,它读取input.txt的内容,其次,它启动带有参数“ Test”的java
命令。 ”及其标准输入(stdin / System.in)中填充了input.txt的内容。
从启动命令的角度来看,从来没有< input.txt
,在其标准输入中只有一些内容。
您也许可以在OS端做一些事情,例如在RHEL上,我可以按以下方式获取文件:
$ sleep 50 < /path/to/file &
[1] 18492
$ my_process_pid=$!
$ cat /proc/$my_process_pid/cmdline
sleep50 # no signs of the redirection
$ readlink /proc/$my_process_pid/fd/0 # but we can check what stdin links to
/path/to/file
在我看来,检索文件名的最直接方法是强制用户将文件的位置作为参数传递,而不是使用重定向直接使用文件的内容。