C言語から外部スクリプト(今回はPHP)をコールするようなプログラムを書いてみた
背景
PHPでいうところの exec や shell_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; }
<?php echo 'Hello World By PHP'; ?>