本文来自依云's Blog,转载请注明。
muttils 是一系列用于 mutt 等终端邮件客户端的小工具,其中 viewhtmlmsg 脚本用于在浏览器中阅读 HTML 邮件:
macro pager \eh "<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()