開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4 (プログラミング言語)
Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の10章(プロセス間通信: お話は楽しい)、エクササイズ(p.447)をpythonで考えてみる。
エクササイズ(p.447)
コード(BBEdit, Emacs)
news_opener.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import os import sys def error(msg): print('{0}: {1}'.format(msg, err)) sys.exit(1) def open_url(url): cmd = {'linux':'x-www-browser', 'win32':'cmd /c start', 'darwin':'open'} launch = '{0} {1}'.format(cmd[sys.platform], url) print(launch) os.system(launch) phrase = sys.argv[1] env = {'RSS_FEED':"http://rss.cnn.com/rss/edition.rss"} try: read_end, write_end = os.pipe() except Exception as err: error("パイプを作成できません。") try: pid = os.fork() except Exception as err: error("プロセスをフォークできません。") if pid == 0: os.close(read_end) os.dup2(write_end, sys.stdout.fileno()) try: os.execle('/usr/bin/python', '/usr/bin/python', 'rssgossip.py', '-u', phrase, env) except Exception as err: error('スクリプトを実行できません。') os.dup2(read_end, sys.stdin.fileno()) os.close(write_end) for line in sys.stdin: if line[0] == '\t': line = line.rstrip() open_url(line[1:])
入出力結果(Terminal, IPython)
$ ./news_opener.py Japan open http://edition.cnn.com/video/data/2.0/video/world/2014/07/17/pkg-ripley-japan-inspirational-cross-dresser.cnn.html?eref=edition open http://edition.cnn.com/2014/07/16/world/asia/china-japan-war-of-words/index.html?eref=edition $
0 コメント:
コメントを投稿