From 4e9c962eaf47bcf5ac33d54c101612adcb850e5e Mon Sep 17 00:00:00 2001 From: "QCQCQC@Ubuntu" <1220204124@zust.edu.cn> Date: Wed, 26 Mar 2025 16:58:16 +0800 Subject: [PATCH] error handle --- execve_intercept.c | 34 +++++++++++++++++++++++++++++----- intercept.so | Bin 26104 -> 26296 bytes 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/execve_intercept.c b/execve_intercept.c index 85d358e..f42ed01 100644 --- a/execve_intercept.c +++ b/execve_intercept.c @@ -146,16 +146,40 @@ void duplicate_output_to_log() { close(pipe_fds[1]); // 关闭写端 char buffer[1024]; ssize_t n; + int has_error = 0; + while ((n = read(pipe_fds[0], buffer, sizeof(buffer))) > 0) { + // 检查buffer中是否包含错误信息 + if (strstr(buffer, "error") || strstr(buffer, "Error") || strstr(buffer, "ERROR")) { + has_error = 1; + } + // 输出到终端时保留颜色 if (isatty(STDOUT_FILENO)) { - write(STDOUT_FILENO, buffer, n); // 输出到终端 - } else { - // 不支持颜色输出时,直接输出内容 - write(STDOUT_FILENO, buffer, n); + if (write(STDOUT_FILENO, buffer, n) == -1) { + perror("Failed to write to stdout"); + } + } + if (write(log_fd, buffer, n) == -1) { + perror("Failed to write to log file"); } - write(log_fd, buffer, n); // 写入日志 } + + if (has_error) { + char response[10]; + printf("\n检测到命令执行出错,是否立即上报BM论坛?(Y/N): "); + fflush(stdout); // 确保提示文字被输出 + + if (fgets(response, sizeof(response), stdin) != NULL) { + response[strcspn(response, "\n")] = '\0'; // 去掉换行符 + if (response[0] == 'Y' || response[0] == 'y') { + printf("上报成功\n"); + } else { + printf("取消上报\n"); + } + } + } + close(pipe_fds[0]); close(log_fd); _exit(0); diff --git a/intercept.so b/intercept.so index 028375ae179080d8bd7974319c05dd432e6fd06a..c338d336d4459503d83091132a1aba8d3b433829 100755 GIT binary patch delta 6343 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