作者proX (不知名水鸟)
看板Python
标题[问题] 如何在shell里面下指令
时间Sun Jul 24 01:33:13 2016
嗨大家好
想请问如何要在一个新的shell里面下指令,不会等到该shell关闭以後才能继续那个指令
举个例子,在Unix shell上面,假设用特定的指令会开新的shell (暂且称之为newsh),
进去这个newsh shell以後,想要用exit再出去,也就是回去原本的unix shell
enter_shell = subprocess.Popen('newsh', shell=True)
exit_shell = subprocess.Popen('exit', shell=True, stdout=subprocess.PIPE)
out, _ = exit_shell.communicate()
print out
enter_shell成功进去newsh以後,exit_shell起不了作用。
试着在 command line 上面打'exit'可以结束newsh,而exit_shell这时候突然可以动了,
因为执行exit_shell又exit一次,但terminal并没有被关闭,之後out才跟着被印出来
但我希望的是exit_shell的程序在newsh里面执行,而不是等待newsh shell关闭以後才
接收这个指令,变成exit两次,试了几次都失败,不知道要怎麽做QQ
有任何建议或其他作法都非常感谢~~~
谢谢大家!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.36.117.240
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1469295195.A.191.html
1F:→ s860134: enter_shell 和 exit_shell 两者环境是独立的 07/24 02:47
2F:推 Neverfor: 我的眼睛!!! 07/24 02:47
之前怕太刺眼,已经改颜色了
3F:→ kenduest: 我看好久,原贴可能完全误会 process 运作原理 07/24 02:54
4F:→ kenduest: 另外还有开一个 shell 目的是什麽也看不出来 07/24 02:55
开另一个shell是为了要在enter_shell跟exit_shell中间做一些事情,
只是以为这样的举例会比较简单易懂,它本身还有其他的设定,
其实newsh是一个小小的、只有shell的作业系统,
我知道process的问题出在哪里,但是依然找不到解决方法可以让python
在不同的shell里面自由切换
※ 编辑: proX (114.36.117.240), 07/24/2016 20:51:04
※ 编辑: proX (114.36.117.240), 07/24/2016 20:58:33
※ 编辑: proX (114.36.117.240), 07/24/2016 20:59:28
5F:推 kenduest: 建议你说清楚实际需求,你程式码错得一团乱,观念也是 07/24 21:19
可否请您详细说明程式码哪里有错?
还是有任何可以达到这个目的的方法?
※ 编辑: proX (114.36.117.240), 07/25/2016 00:56:23
6F:→ kenduest: 我的意思是,不是程式码错,而是 process 观念错误 07/25 00:56
7F:→ kenduest: 你陈述用的程式码几乎认定另外一个 exit_shell 07/25 00:57
8F:→ kenduest: 可以去结束原本 enter_shell 项目,这就是很明显的点 07/25 00:57
9F:→ kenduest: 另外还用 popen() 方式预期直接键盘与 shell 互动更怪 07/25 00:58
10F:→ kenduest: 再来 exit_shell 内用 shell=True 再呼叫一个新的 07/25 00:58
11F:→ kenduest: shell 启动之後去执行 exit 命令让该 shell 结束 07/25 00:59
12F:→ kenduest: 整个目的老实说不只是奇怪也很诡异 07/25 00:59
13F:→ kenduest: 就你整个程式码来说,那是 python 开两个独立 process 07/25 01:02
14F:→ kenduest: 倒是可以说清楚一点你实际的目的而不是你片段的需求 07/25 01:03
15F:→ kenduest: 问题会比较有解... 07/25 01:03
16F:推 aweimeow: 用 pty ? 07/25 20:10