我无法弄清楚为什么下面的代码会首先打印" eof" (在交互窗口上)。我正在使用DrRacket。
(find-first-path (car
(regexp-split #px"\n"
(with-output-to-string
(λ () (system "find /usr/lib/ -name
libpython2.7.so"))))))
答案 0 :(得分:2)
system
库函数启动一个接受其输入的shell进程
来自(current-input-port)。在DrRacket中,这会导致创建一个(
“交互”窗口的子窗口,您可以在其中键入输入
您希望被视为子流程的输入。
因此,例如,尝试运行此程序
#lang racket
(system "cat")
您在输入窗口中键入的每一行都将被管道传输到 猫的过程。但是,当你完成后,你需要一种方法来发送EOF 子流程。这就是右边的“EOF”按钮。
如果您不想看到此窗口,可以创建一个空输入流 到您的子流程,例如:
(parameterize ([current-input-port (open-input-string "")])
(system "find /usr/lib/ -name libpython2.7.so"))