我正在为我的大学开发一个在线评委。我需要在 5 秒后让每个程序超时以测量时间限制。我的输入是 input.txt 文件,我正在通过以下命令在 ubuntu 中编译并获取输出
g++ -lm tle.cpp
timeout 5s a.exe < input.txt
这些命令只允许 CPU 运行程序 5 秒。现在我需要 Windows cmd 的等效命令。
编辑 :
这个问题与上一个问题不同,因为 Windows 超时过程与 ubuntu 超时过程不同。Windows 超时过程只是等待,但没有设置执行的明确时间。如果在超时之前执行完成,则 Windows 超时仍会等待,而 ubuntu 超时会为程序执行设置明确时间并在执行后终止,但不会等待程序终止。所以如果执行完成,我想停止等待。
答案1
解决方案 :
顺便说一句,我找到了解决方案。在 Windows 中,需要创建三个批处理文件
进程
@ECHO OFF
start /b cm.bat
start cmd.exe /c run.bat
EXIT
命令行工具
@ECHO OFF
a.exe < input.txt > out.txt
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT
运行脚本
@ECHO off
timeout /t 5
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT
现在运行 process.bat 。它将同时/并行启动 cm.bat 和 run.bat。当 cm.bat 中的 a.exe 终止时;cm.bat 将终止 run.bat,因此它将作为 ubuntu 超时运行。