error handle
This commit is contained in:
parent
5275afa66b
commit
4e9c962eaf
|
|
@ -146,16 +146,40 @@ void duplicate_output_to_log() {
|
||||||
close(pipe_fds[1]); // 关闭写端
|
close(pipe_fds[1]); // 关闭写端
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
ssize_t n;
|
ssize_t n;
|
||||||
|
int has_error = 0;
|
||||||
|
|
||||||
while ((n = read(pipe_fds[0], buffer, sizeof(buffer))) > 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)) {
|
if (isatty(STDOUT_FILENO)) {
|
||||||
write(STDOUT_FILENO, buffer, n); // 输出到终端
|
if (write(STDOUT_FILENO, buffer, n) == -1) {
|
||||||
} else {
|
perror("Failed to write to stdout");
|
||||||
// 不支持颜色输出时,直接输出内容
|
}
|
||||||
write(STDOUT_FILENO, buffer, n);
|
}
|
||||||
|
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(pipe_fds[0]);
|
||||||
close(log_fd);
|
close(log_fd);
|
||||||
_exit(0);
|
_exit(0);
|
||||||
|
|
|
||||||
BIN
intercept.so
BIN
intercept.so
Binary file not shown.
Loading…
Reference in New Issue