本文来自
依云's Blog
,转载请注明。
muttils
是一系列用于 mutt 等终端邮件客户端的小工具,其中 viewhtmlmsg 脚本用于在浏览器中阅读 HTML 邮件:
macro
pager
\e
h
"
<
pipe-entry
>
viewhtmlmsg
<enter>
"
在网页浏览器中查看
但一直以来有个问题:需要等好几秒脚本才会返回,因为它要给浏览器足够的时间来读取 HTML 等文件,然后在退出前清理掉它们。如果是 Linux 系统并且安装了 inotifyx 包会好一些,它检测到有程序读取了 HTML 文件之后就立即退出了。
不过我希望更快一些。到后台去处理,到后台去等待。我要继续阅读下一封邮件。
所以就有了这么个小脚本:读取标准输入传过来的数据之后立即 fork,父进程退出,子进程去把数据交给 viewhtmlmsg 来处理:
#!/usr/bin/env python3
import sys
import os
import subprocess
def main():
content = sys.stdin.buffer.read()
if os.fork() > 0:
return
p = subprocess.Popen(
'viewhtmlmsg',
stdin = subprocess.PIPE,
p.communicate(content)
p.wait()
if __name__ == '__main__':
main()