spring-ai-alibaba-jmanus/src/main/java/com/alibaba/cloud/ai/example/manus/tool/bash/LinuxShellExecutor.java [97:114]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	public void terminate() {
		if (currentProcess != null && currentProcess.isAlive()) {
			// 首先尝试发送SIGINT (ctrl+c)
			currentProcess.destroy();
			try {
				// 等待进程响应SIGINT
				if (!currentProcess.waitFor(5, TimeUnit.SECONDS)) {
					// 如果进程没有响应SIGINT，强制终止
					currentProcess.destroyForcibly();
				}
			}
			catch (InterruptedException e) {
				Thread.currentThread().interrupt();
				currentProcess.destroyForcibly();
			}
			log.info("Linux process terminated");
		}
	}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



spring-ai-alibaba-jmanus/src/main/java/com/alibaba/cloud/ai/example/manus/tool/bash/MacShellExecutor.java [96:113]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	public void terminate() {
		if (currentProcess != null && currentProcess.isAlive()) {
			// 首先尝试发送SIGINT (ctrl+c)
			currentProcess.destroy();
			try {
				// 等待进程响应SIGINT
				if (!currentProcess.waitFor(5, TimeUnit.SECONDS)) {
					// 如果进程没有响应SIGINT，强制终止
					currentProcess.destroyForcibly();
				}
			}
			catch (InterruptedException e) {
				Thread.currentThread().interrupt();
				currentProcess.destroyForcibly();
			}
			log.info("Mac process terminated");
		}
	}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



