私が取り組んでいる 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を使用しています。