我在Ubuntu上使用eSpeak并且有一个Python 2.7脚本可以打印并说出一条消息:
import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])
Run Code Online (Sandbox Code Playgroud)
eSpeak会产生所需的声音,但是外壳会出现一些错误(ALSA lib ...,没有套接字连接),因此我无法轻易读取之前打印的内容.退出代码为0.
不幸的是,没有任何记录的选项可以关闭它的详细程度,所以我正在寻找一种只能在视觉上使其静音并保持打开的外壳清洁以进行进一步交互的方法.
我怎样才能做到这一点?
我有一个父Python脚本会启动子(其发射的孙子),并经过一段时间后,我终止子,但孙子继续泵到标准输出。在我杀死孩子之后,我想抑制/重定向孙子(及其所有后代)的 stdout 和 stderr。
这是家长:
import time
import subprocess
proc = subprocess.Popen('./child.sh')
print("Dad: I have begotten a son!")
time.sleep(1)
proc.kill()
proc.wait()
print("Dad: My son hath died!")
time.sleep(2)
print("Dad: Why does my grandson still speak?")
Run Code Online (Sandbox Code Playgroud)
这是我无法修改的子脚本。
#!/bin/bash
./grandchild.sh &
echo "Child: I had a son!"
for (( i = 0; i < 10; i++ )); do
echo "Child: Hi Dad, meet your grandson!"
sleep 1
done
exit 0
Run Code Online (Sandbox Code Playgroud)
这是一个吵闹的孙子,我无法修改。
#!/bin/bash
for …Run Code Online (Sandbox Code Playgroud)