2014年2月23日日曜日

開発環境

Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の9章(プロセスとシステムサービス)、エクササイズ(p.417)を解いてみる。

その他参考書籍

エクササイズ(p.417)

コード(BBEdit, Emacs)

newshound.c

#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char *feeds[] = {"http://feeds.feedburner.com/KamimurasBlog?format=xml",
                     "http://rss.cnn.com/rss/edition.rss",
                     "http://www.rollingstone.com/siteServices/rss/allNews"};
    int times = 3;
    char *phrase = argv[1];
    int i;
    
    for (i = 0; i < times; ++i) {
        char var[255];
        sprintf(var, "RSS_FEED=%s", feeds[i]);
        char *vars[] = {var, NULL};
        
        /* execleが実行されたらそこでこのプログラムはすぐに終了するから、ループも終了
         * してfeed[1]、 feed[2]は検索されない
         */
        if (execle("/usr/bin/env", "/usr/bin/env", "python", "rssgossip.py",
                phrase, NULL, vars) == -1) {
            fprintf(stderr, "スクリプトを実行出来ません:%s\n", strerror(errno));
            return 1;
        }
    }
    return (0);               
}

Makefile

all: newshound

newshound: newshound.c
 cc -g -o newshound newshound.c

clean:
 rm newshound

入出力結果(Terminal)

$ make && ./newshound 'Dart'
cc -g -o newshound newshound.c
Dart - (HTML(text, setInnerHtml))
 - Dart SDKDart EditorKey Bindings(Content AssistantOS XSpotlight)
Dart - (querySelector, querySelectorAll)
Dart - (RegExp class(()))
$

0 コメント:

コメントを投稿