popen に問題があります (CentOS マシンで使用しています)。
コードは次のようになります (_oss は ostringstream です)。
...
FILE* lp_pipe = popen("/opt/scripts/myscript.php", "r");
if(!lp_pipe) {
return false;
}
char l_buffer[256];
while(!feof(lp_pipe))
{
if(fgets(l_buffer, 256, lp_pipe) != NULL)
_oss << l_buffer;
}
pclose(lp_pipe);
....
誰かがphpスクリプトを変更するまで、これはうまく機能していました。コマンドラインからスクリプトを実行すると、期待どおりの結果が表示されますが、コードが機能しなくなります。初めてfgets
呼び出されると NULL が返され、その後feof(lp_pipe)
は 1が返されるようになりました