2

私が取り組んでいる C++ プログラムでは、いくつかの操作を行うために外部アプリケーションを呼び出す必要があります。アプリケーションを変更できません。この操作には時間がかかりすぎる可能性があるため、タイムアウトを追加する必要があります。system() とブーストスレッドを使ってみた

int main() 
{
  [...]

  boost::thread t(function1);
  t.timed_join(boost::posix_time::seconds(10));

  [...]

  return 0;
}

void function1()
{
  system("external application");
}

しかし、10 秒後にメインに戻ると、外部アプリケーションはまだバックグラウンドで実行されています。system() の代わりに exec() を使用すると、メインが「失われる」ため、何も機能しません。私に何ができる?私はLinuxを使用しています。

4

2 に答える 2