当前位置: 首页 > 面试题库 >

java本机进程超时

咸琪
2023-03-14
问题内容

目前,我使用以下命令执行本机进程:

java.lang.Process process = Runtime.getRuntime().exec(command); 
int returnCode = process.waitFor();

假设我希望在经过一定时间后终止,而不是等待程序返回。我该怎么做呢?


问题答案:

这是Plexus CommandlineUtils的工作方式:

Process p;

p = cl.execute();

...

if ( timeoutInSeconds <= 0 )
{
    returnValue = p.waitFor();
}
else
{
    long now = System.currentTimeMillis();
    long timeoutInMillis = 1000L * timeoutInSeconds;
    long finish = now + timeoutInMillis;
    while ( isAlive( p ) && ( System.currentTimeMillis() < finish ) )
    {
        Thread.sleep( 10 );
    }
    if ( isAlive( p ) )
    {
        throw new InterruptedException( "Process timeout out after " + timeoutInSeconds + " seconds" );
    }
    returnValue = p.exitValue();
}

public static boolean isAlive( Process p ) {
    try
    {
        p.exitValue();
        return false;
    } catch (IllegalThreadStateException e) {
        return true;
    }
}


 类似资料:
  • 问题内容: 是否有任何参数或选项可为Python的subprocess.Popen方法设置超时? 像这样: ? 问题答案: 我会建议采取看看类中的模块。我用它来实现超时。 首先,创建一个回调: 然后打开过程: 然后创建一个计时器,该计时器将调用回调,并将过程传递给它。 在程序后面的某个位置,您可能需要添加以下行: 否则,python程序将继续运行,直到计时器运行完毕。 编辑:我被告知, 在和条件之

  • 问题内容: 我想在子流程上使用超时 不幸的是,尽管这会引起超时错误,但它会在30秒后发生。看来check_output无法中断shell命令。 我该如何在Python方面阻止这种情况?我怀疑subprocess32无法杀死超时的进程。 问题答案: 超时基本上是: 有两个问题: [第二个]可能会等待后代进程,而不仅是直接子进程,请参见Python子进程.check_call与.check_outpu

  • 问题内容: 我正在python中使用subprocess模块​​运行一些shell脚本。如果shell脚本运行时间很长,我想杀死该子进程。我认为如果将其传递给我的陈述就足够了。 这是代码: 我已经用一些运行120秒的shell脚本测试了此调用。我期望子进程在30秒后被杀死,但是实际上该进程正在完成120秒脚本,然后引发了Timeout Exception。现在的问题是如何通过超时杀死子进程? 问题

  • 错误:任务执行失败: app: transformNativeLibsBackStripDebugSymbolForDebug。 启动进程“命令”C:\Users\LENOVO\AppData\Local\Android\Sdk\ndk bundle\toolschains\mips64el-linux-Android-4.9\prebuilded\windows-x86\u 64\bin\mip

  • 我从docker中提取了弹性搜索图像,并尝试使用docker命令运行它,但没有成功。我得到了以下错误: 错误:[1]引导检查失败[1]:默认发现设置不适合生产使用;必须至少配置[discovery.seed_主机、discovery.seed_提供程序、cluster.initial_master_节点]中的一个{“类型”:“服务器”、“时间戳”:“2020-02-10T19:47:06566Z”

  • 问题内容: 绿色线程和本机线程有什么区别? 为什么将其命名为绿色和原生? 我是编程世界的新手。我喜欢学习Java。在经历Java线程面试问题时,我发现了这一点。我听说过线程,但是没有听说过这些绿色线程和本地线程。我对绿色线程和本机线程感到困惑,但不清楚。 在这种情况下,线程被称为绿色线程还是本地线程?(我的意思是在编程中) 问题答案: 绿色线程和本机线程有什么区别? 绿色线程由虚拟机调度。 本机线