2014年9月24日水曜日

開発環境

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 openUrl(url):
    if sys.platform == 'win32':
        os.system('cmd /c start {0}'.format(url))
    elif sys.platform == 'linux':
        os.system("x-www-browser '{0}' &".format(url))
    elif sys.platform == 'darwin':
        os.system("open '{0}' &".format(url))


phrase = sys.argv[1]
env = dict(RSS_FEED='http://rss.cnn.com/rss/edition.rss')

read_end, write_end = os.pipe()
pid = os.fork()

if pid == 0:
    os.close(read_end)
    os.dup2(write_end, 1)
    os.execle('/usr/bin/python', '/usr/bin/python', 'rssgossip.py', '-u',
              phrase, env)

os.close(write_end)
os.dup2(read_end, 0)
for line in sys.stdin:
    if line[0] == '\t':
        line = line.strip()
        print(line)
        openUrl(line)

入出力結果(Terminal, IPython)

$ ./news_opener.py 'world'
http://edition.cnn.com/2014/09/05/world/gallery/this-artist-has-created-the-worlds-most-frustrating-objects/index.html?eref=edition
http://edition.cnn.com/2014/09/22/travel/best-nightlife-cities/index.html?eref=edition
http://edition.cnn.com/video/data/2.0/video/us/2014/09/23/pkg-man-carries-cross-around-the-world.kait.html?eref=edition
http://edition.cnn.com/2014/09/22/business/coolest-brands-list/index.html?eref=edition
$

0 コメント:

コメントを投稿