劣质Shell或UIOP:与后台进程交互

5
所以,我已经通过使用inferior-shell从SBCL Lisp运行程序了(UIOP应该也可以)。无论如何,现在我仍然不知道如何与正在后台运行的程序进行交互。
所有这些功能,如连接到正在运行的程序的stdin和stdout的管道和流,都有广告,但没有文档说明。看起来这是最基本的事情。
有人有做这样事情的例子吗?
任何帮助将不胜感激。
-Todd

1
这可能是一个对于SO来说太过宽泛的问题。你有一个简单的示例可以展示吗?在哪里出现了不符合你期望的行为? - Renzo
@Renzo 我的理解是:SBCL有sb-ext:run-program,它允许您异步启动进程并将输入和输出流连接到它。然后,在程序的生命周期中,您可以使用流与其进行通信(例如,启动gnuplot并使用同一进程运行和绘图而不是一直重启它)。在可移植的方式中,我只看到了同步的方法:启动进程并传递启动参数-等待进程完成。 - mobiuseng
EAZY-PROCESS 库可以轻松创建管道和异步进程,但是有意地不支持流。一切都基于文件和文件描述符。虽然您可以使用临时文件。 - coredump
1个回答

1

1
是的。显而易见的做法是使用sb-ext:run-program,然而我要运行的命令行是这样的:/usr/bin/java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -outputFormat text。问题在于星号周围的引号,在用反斜杠转义时会出现问题。我尝试过使用带引号参数的其他Java程序,它们也无法正常工作。另外,感谢提供gnuplot示例。我确实需要像那样的东西! - Todd Pierce
@ToddPierce 除非 shell 看到它们,否则您不需要引用参数,而在此处它并没有看到它们。 - user5920214

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接