我最近在使用 Macaca 进行测试,在 java 中使用多线程进行测试,启动 server 的代码如下

public void execCmd() {
    logger.debug("To exec cmd :" + this.command);
    try {
        ProcessBuilder pb = new ProcessBuilder(generateAl(command));
        pb.redirectErrorStream(true);
        this.p = pb.start();
    } catch (IOException e) {
        logger.error(e.toString());
    }
}

结束 server 的代码如下:

public void destroy() {
    if (this.p != null) {
        if(this.thread != null) {
            this.thread.setExitFlag(true);
        }
        this.p.destroy();
    }
}

现在存在的问题是:执行 this.p.destroy();之后

501  1606  1521   0  8:25下午 ttys005    0:00.26 node /usr/local/bin/macaca server -p 3456
 501  1607  1606   0  8:25下午 ttys005    0:00.26 node /usr/local/lib/node_modules/macaca-cli/bin/macaca-cli-server -p 3456

只有

501  1606  1521   0  8:25下午 ttys005    0:00.26 node /usr/local/bin/macaca server -p 3456

这条进程被销毁,

501  1607  1606   0  8:25下午 ttys005    0:00.26 node /usr/local/lib/node_modules/macaca-cli/bin/macaca-cli-server -p 3456

进程依然存在,端口没有释放,所以想请教下各位有没有什么好的 macaca server 的管理方法,因为我不想采用扫描端口杀进程的方法来实现


↙↙↙阅读原文可查看相关链接,并与作者交流