python调用后台程序不返回
答案:2 悬赏:70 手机版
解决时间 2021-03-09 02:46
- 提问者网友:蓝琪梦莎
- 2021-03-08 20:12
我用web.py做一个后台需要调用一个java程序,shell命令为"nohup java -jar test.jar>>test.log&",但web.py在调用这段代码后,一直不返回。查阅资料发现是由于nohup执行后,要求按任意键才能继续,而我这本非交互环境,是不可能去按键的。求高手指点。
最佳答案
- 五星知识达人网友:不甚了了
- 2021-03-08 21:25
试试
p = subprocess.Popen("nohup java -jar test.jar>>test.log&",
shell=True,
close_fds=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
p.stdin.write('\n')
另外:nohup java -jar test.jar>>test.log&最好写成nohup java -jar test.jar >> test.log 2>&1 &
p = subprocess.Popen("nohup java -jar test.jar>>test.log&",
shell=True,
close_fds=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
p.stdin.write('\n')
另外:nohup java -jar test.jar>>test.log&最好写成nohup java -jar test.jar >> test.log 2>&1 &
全部回答
- 1楼网友:春色三分
- 2021-03-08 22:21
你已经将程序在后台运行了啊,我觉得你是搞错了一个概念,在后台运行并不代表程序不能输出内容到终端啊,你不想屏幕上显示,重定向输出就完了。
python3 abc >null &
然后,另一个问题,为什么ctrl c没有用,这个快捷键只对前台运行的程序有效!你程序都在后台运行了,当然没用咯。程序转到后台时会提示job id的,比如“[1] 4226”,job id是1,进程id是4226。
查看当前有哪些job在运行,可以通过jobs命令来实现,比如:
[root@localhost]# jobs -l
[1]+ 4347 运行中 python3 main.py > null &一般我用到的命令就是bg和fg,fg(foreground的意思)命令可以将后台运行的job换到前台,比如fg 1就能把上面显示的python3 main.py > null &换到前台执行。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯