首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Clojure中,如何向Clojure.java.shell/sh创建的进程发送退出命令

在Clojure中,可以使用Clojure.java.shell/sh函数创建进程,并且可以通过向进程发送退出命令来终止进程。

要向Clojure.java.shell/sh创建的进程发送退出命令,可以使用进程的输出流(:out)或错误流(:err)来发送命令。首先,我们需要使用Clojure.java.io/writer函数创建一个写入流,然后将其传递给进程的输入流(:in)。

下面是一个示例代码,演示如何向Clojure.java.shell/sh创建的进程发送退出命令:

代码语言:txt
复制
(require '[clojure.java.shell :refer [sh]])
(require '[clojure.java.io :as io])

(let [process (sh "ls")
      exit-command "exit\n"
      writer (io/writer (:in process))]
  (.write writer exit-command)
  (.flush writer)
  (.close writer)
  (sh "echo" "Process exited with code" (:exit process)))

在上面的示例中,我们首先使用sh函数创建了一个进程,该进程执行了ls命令。然后,我们定义了一个exit-command变量,其中包含了要发送给进程的退出命令。接下来,我们使用io/writer函数创建了一个写入流writer,并将其传递给进程的输入流(:in)。然后,我们使用.write方法将退出命令写入流中,使用.flush方法刷新流,最后使用.close方法关闭流。

通过以上操作,我们成功向进程发送了退出命令。最后,我们使用sh函数执行了echo命令,打印出进程的退出状态码。

请注意,上述示例中的命令仅用于演示目的。实际使用时,你需要根据具体的需求和命令来修改代码。

关于Clojure和Clojure.java.shell的更多信息,你可以参考以下链接:

  • Clojure官方网站:https://clojure.org/
  • Clojure.java.shell文档:https://clojure.github.io/clojure/clojure.java.shell-api.html
相关搜索:Babashka -如何将stdout从外部进程调用`clojure.java.shell/sh`路由到实际的stdout如何向C中的进程发送信号?如何向Kubernetes中运行的容器发送命令?如何使用react钩子将在子进程中创建的数据发送到父进程?在屏幕中,如何在单个屏幕会话中向所有虚拟终端窗口发送命令?在vscode的集成终端中运行命令后如何获取退出代码如何解决异常:Windows10中Java网关进程在发送端口号前已退出如何调用python脚本中的函数,然后在kill命令终止时退出?如何通过邮件发送在android/data中创建的文件?如何在moodle中向管理员发送“课程创建者”角色的请求?在Java中,子线程如何向主线程(方法)发送连续的消息?向新用户发送带有令牌的电子邮件以在Laravel中创建帐户如何确保在aspnetcore后台服务中启动的进程在web应用程序退出时终止。如何使用java在android中同时向1个以上的用户发送otp?如何向在控制器中抛出的异常发送messages.properties密钥?如何通过多进程模块创建的工作进程在python中组合动态生成的测试套件如何在nightwatch.js自定义命令中向浏览器堆栈发送正确的请求?如何利用arduino uno在一次数据包传输中向xbee路由器发送多条命令在Node JS中,如何解析命令来接收带有子进程的特定行如何在PostgreSQL中通过命令行获取仅转储函数创建和存储的进程脚本
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 在linux后台运行脚本的方法和命令

    后台运行脚本 执行脚本test.sh:./test.sh 中断脚本test.sh:ctrl+c 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid) 直接在后台运行脚本test.sh:./test.sh & 查看当前shell环境中已启动的任务情况:jobs 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid) 中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number 以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。

    01
    领券