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