在调用Racket函数而不使用out to string后获取EOF
我不明白为什么下面的代码会首先打印“eof”(在交互窗口上)。我在用球拍在调用Racket函数而不使用out to string后获取EOF,racket,Racket,我不明白为什么下面的代码会首先打印“eof”(在交互窗口上)。我在用球拍 (find-first-path (car (regexp-split #px"\n" (with-output-to-string (λ () (system "find /usr/lib/ -name libpython2.7.so")))))) 系统库函数启动接受其输入的shell进程 从(当前输入端口)。在DrRacket中,这会导致创建(短- 活动)交互窗口的
(find-first-path (car
(regexp-split #px"\n"
(with-output-to-string
(λ () (system "find /usr/lib/ -name
libpython2.7.so"))))))
系统
库函数启动接受其输入的shell进程
从(当前输入端口)。在DrRacket中,这会导致创建(短-
活动)交互窗口的子窗口,您可以在其中键入
您希望被视为子流程的输入
例如,试着运行这个程序
#lang racket
(system "cat")
您在输入窗口中键入的每一行都将通过管道传输到
cat过程。但是,当您完成时,您需要一种方法将EOF发送到
子流程。这就是右边的“EOF”按钮的作用
如果不想看到此窗口,可以创建一个空的输入流
到您的子流程,例如:
(parameterize ([current-input-port (open-input-string "")])
(system "find /usr/lib/ -name libpython2.7.so"))
系统
库函数启动接受其输入的shell进程
从(当前输入端口)。在DrRacket中,这会导致创建(短-
活动)交互窗口的子窗口,您可以在其中键入
您希望被视为子流程的输入
例如,试着运行这个程序
#lang racket
(system "cat")
您在输入窗口中键入的每一行都将通过管道传输到
cat过程。但是,当您完成时,您需要一种方法将EOF发送到
子流程。这就是右边的“EOF”按钮的作用
如果不想看到此窗口,可以创建一个空的输入流
到您的子流程,例如:
(parameterize ([current-input-port (open-input-string "")])
(system "find /usr/lib/ -name libpython2.7.so"))
在交互窗口上?你是说对话吗?如果是,你能附上它的截图吗?谢谢,但是John已经在交互窗口上回答了这个问题?你是说对话吗?如果是,你能附上它的屏幕截图吗?谢谢,但是John已经回答了这个问题。我在DrRacket的页脚处也看到了这条消息“subprocess:probled(execute)access to/bin/sh”。我也不想看到此消息。我不能确定,但我怀疑此消息来自DrRacket默认启用的自动编译。你可以禁用它,但你可能不想;它还将阻止自动检测其他语法错误。我建议,如果这不太麻烦您,您可以忽略它。我还在DrRacket的页脚处看到这条消息“subprocess:probled(execute)access to/bin/sh”。我也不想看到此消息。我不能确定,但我怀疑此消息来自DrRacket默认启用的自动编译。你可以禁用它,但你可能不想;它还将阻止自动检测其他语法错误。我建议,如果你不太在意它,你可以忽略它。