3

我正在尝试通过将 Java 作为进程运行来将其添加到 Visual Prolog 生成的可执行文件中。

我已经使用这个答案来实现流程交互。我的 Visual Prolog 需要来自命令行的数字,它甚至会验证它(无论它是否是 Prolog 术语),但是从 Java 运行时,它不会将输入识别为有效。那些转义字符是否将我的号码变成了字符串?

当我尝试删除它们时,我的 Java 程序挂起并且 Visual Prolog 可执行文件没有响应。我认为这就像按下回车键。

4

4 回答 4

1

\r\n 是 Windows 中的EOL(行尾)序列

如果输入是面向行读取的,那么在发送 EOL(或 EOF)之前,消费代码不会处理该行 - 这将使消费者看起来“挂起”,而它实际上只是在耐心地等待行的其余部分。考虑 Java 中的 Scanner.nextLine:nextLine直到准备好整行才会返回

解决方案:将带有适当输入的 EOL 发送到 Visual Prolog 或关闭输入流。


另请参见"line.separator",也许。但是,各种println(打印)方法应该已经包括适当的 EOL。

于 2013-12-22T04:58:31.537 回答
0

当且仅当目标进程需要它时,它才是必要的。

您声明您的进程“需要命令行中的数字”,但是如果您通过其“stdin”输入它,则情况并非如此。

相反,它似乎需要通过输入到控制台的行来输入数字。

在任何一种情况下,单词“line”都表示需要行终止符。

于 2013-12-22T05:12:34.943 回答
0

\r 是回车 CR \n 是换行 LF

许多文本协议要求您使用 CR+LF,有些需要在 LF 上识别。

这就像在 Windows 中的文本中开始一个换行符

于 2013-12-22T04:33:00.107 回答
0

引用的示例是使用管道(重定向标准输入和标准输出)在进程之间进行通信,但您说您的程序需要命令行上的数字。

于 2016-01-18T12:57:08.007 回答