Я разрабатываю онлайн-судью для моего университета. Мне нужно тайм-аут каждой программы через 5 секунд для измерения ограничения по времени. мой ввод - это файл input.txt, и я собираю и получаю вывод в ubuntu с помощью этих команд

g++ -lm tle.cpp
timeout 5s a.exe < input.txt

Эти команды позволяют процессору запускать программы всего 5 секунд. Теперь мне нужны эквивалентные команды для Windows cmd.

Редактировать :

Этот вопрос отличается от предыдущего, так как процесс ожидания Windows отличается от процесса ожидания Ubuntu. Процесс ожидания Windows просто ожидает, но не устанавливает определенного времени для выполнения. Если выполнение выполнено до истечения времени ожидания, то время ожидания Windows все еще ожидает, когда время ожидания Ubuntu устанавливает определенное время для выполнения программы и завершается после выполнения, но не ожидает, когда программа завершается. Поэтому я хочу перестать ждать, если выполнение будет завершено.

1 ответ1

1

Решение :

Кстати, я нашел свое решение. В windows нужно сделать три пакетных файла

process.bat

@ECHO OFF
start   /b cm.bat
start  cmd.exe /c run.bat
EXIT

cm.bat

@ECHO OFF
a.exe < input.txt > out.txt
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT

run.bat

@ECHO off
timeout /t 5
taskkill /im a.exe /f 
taskkill /im cmd.exe /f

EXIT

Теперь запустите process.bat. он запустит и cm.bat, и run.bat одновременно / параллельно. Когда a.exe из cm.bat завершается; cm.bat убивает run.bat и, таким образом, он будет работать как тайм-аут Ubuntu.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .