Убить одновременно выполняю функцию черного ящика в C ++ после определенного времени.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Убить одновременно выполняю функцию черного ящика в C ++ после определенного времени.

Сообщение Anonymous »

Допустим, у меня есть функция Blackbox Blackbox () . Я не знаю, что произойдет в функции Blackbox, но есть вероятность, что он будет работать на неопределенный срок.void blackBox(){
// ... cannot see
}

int main(){
// Call blackBox() while running the main function
// Terminate after a certain time limt
}
< /code>
Я пытался использовать Boost :: Process, Boost :: Thread и Fork (). Но функции завершения не работают. Я вижу, что он все еще работает в системном мониторе после выхода моей основной программы. К вашему сведению, я использую Linux. < /P>
Минимальный воспроизводимый пример: < /p>
string command = "g++ main.cpp";

pid_t pid = fork();
if (pid == 0) {
// Run the command
system(command.c_str());
_exit(0);
} else if (pid > 0) {
int status;
while (1) {
auto elapsedTime = std::chrono::high_resolution_clock::now() - runStart;
pid_t result = waitpid(pid, &status, WNOHANG);
// the system function exits before the time limit
if (result == pid) {
fmt::print("DONE\n");
break;
}
// Terminate after the time limit of 1s is exceeded
if (elapsedTime > std::chrono::milliseconds(1000)) {
// Does not work
kill(pid, SIGKILL);

fmt::print("KILLED\n");
break;
}
}
_exit(0);
} else {
fmt::print("FORK FAIL\n");
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... n-time-lim
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»