このディレクトリの索引
#  出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1381909900/542
#  イマイチ出力や入力、パイプについて深く理解できなかったので質問します 
#  よろしくお願いします。 
#   
#  [1] システムプログラム 
#  [2] 一般の実行プログラムである/usr/bin/lessを子プロセスとして起動して、pipeを通して子プロセスの標準入力にデータ(複数行のテキスト)を渡すプログラムを作りなさい。 
#  

'一般の実行プログラムである/usr/bin/lessを子プロセスとして起動して、
pipeを通して子プロセスの標準入力にデータ(複数行のテキスト)を渡すプログラムを作りなさい。'(_複数行のならび) :-
        '一般の実行プログラムを子プロセスとして起動して、
pipeを通して子プロセスの標準入力にデータ(複数行のテキスト)を渡す'('/usr/bin/less',_複数行ならび).


'一般の実行プログラムを子プロセスとして起動して、
pipeを通して子プロセスの標準入力にデータ(複数行のテキスト)を渡す'(_実行プログラム,_複数行ならび) :-
        atomic_list_concat(_複数行ならび,'\n',_文字列),
        atom_chars(_文字列,_文字ならび),
        popen(_実行プログラム,_文字ならび).

popen(Command,Chars) :-
        open(pipe(Command),read,Instream),
        get_char(Instream,Char),
        popen(Instream,Char,Chars),
        close(Instream),!.

popen(Instream,end_of_file,[]) :- !.
popen(Instream,Char,[Char|R]) :-
        get_char(Instream,Char2),
        popen(Instream,Char2,R).