C言語から外部スクリプト(今回はPHP)をコールするようなプログラムを書いてみた

背景

PHPでいうところの execshell_exec のようなことがしたい。
Cだと system っていう関数があるんだけど、それだと返り値がわからない。
出力結果をファイルに出力して、それをCで読み込んで・・・ってのも考えたけど
ファイルがかぶってしまうといやなので、調べていたら popen という便利な関数があった。

$ man popen
popen() 関数は、プロセスをオープンする。パイプを生成し、フォークを行い、シェル起動する。

コード

これを使ってみたサンプルコードが↓

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

int main()
{
    char  str[512],*ptr;
    FILE  *fp;
    char* code= "php ./hoge.php";

    if((fp=popen(code,"r"))==NULL){
        fprintf(stderr,"error!!!\n");
        return 0;
    }
    while(1){
        fgets(str,512,fp);
        if(feof(fp)){
            break;
        }
        ptr=strchr(str,'\n');
        if(ptr!=NULL){
            *ptr='\0';
        }
        printf("%s\n",str);
    }
    pclose(fp);
    return 0;
}

hoge.php

<?php
    echo 'Hello World By PHP';
?>

実行

$ ./a.out
Hello World By PHP

よし!!

考察

どなたか、Cから外部スクリプトを呼ぶスマートな方法知らないですかね?
#条件としては、スクリプトの返り値をCに持ってこれること。