マルチスレッド アプリケーションに問題があります。1 つのスレッドで同期popen()
コマンドを実行すると、他のアプリケーション スレッドの速度が大幅に低下します。高負荷を生成popen()
する executeを含むスレッド。ffmpeg
通常、他のスレッドの実行時間は 0.0007 ミリ秒です。をpopen
使用すると、一部のスレッドで実行時間が最大 14 ~ 20 秒増加します。
この問題を解決するには?
システムは FreeBSD 6.4 です
FILE *pipe;
char buff[512];
if ( !(pipe = popen( command.c_str(), "r")) )
{ // if pipe is NULL
return false;
}
while ( fgets(buff, sizeof(buff), pipe) != NULL )
{
ptr_output->append(buff);
}
役に立たない popen can の新しいコードは次のとおりです。正しいコード - popen を使用したノンブロッキング パイプ