【发布时间】:2019-05-26 13:24:43
【问题描述】:
我正在使用Java exec 运行bash 脚本,但是当我输入CTRL+C 时,Java 进程和子进程都会退出,如何在JVM 关闭后让子进程继续运行?
String command = "ffmpeg -re -strict -2 -i video.mp4 -c:v copy -an -f rtp rtp://127.0.0.1:1234";
Utils.writeToFile("sub.sh", command);
new ProcessBuilder("parent.sh", "sub.sh").inheritIO()
.start().waitFor();
parent.sh:
#!/bin/bash
trap '' SIGINT SIGTERM SIGQUIT SIGHUP SIGTSTP
nohup "$@" &
我已经阅读了here 和here 类似问题的答案,例如,使用 nohup 在该脚本运行命令中启动父 bash 脚本,或使用陷阱命令来阻止信号, 在我的研究中,它适用于例如“tail -f somefile”,但不适用于我的用例 “ffmpeg -params”,请帮忙,谢谢。
【问题讨论】: