使用tty命令获取当前终端名称,将日志输出到当前终端

This commit is contained in:
guo_peixu
2022-06-23 17:12:25 +08:00
parent fada178df2
commit e13e857381

View File

@@ -24,6 +24,8 @@
#define CONSUMER_CARE_PID_SPEC 1
#define CONSUMER_CARE_PID_MAX_LEN 128
int g_cur_tty_fd = -1;
struct log_file_list{
char log_file_pre[MESA_SHM_LOG_PATH_LEN];
char real_log_file[MESA_SHM_LOG_PATH_LEN];
@@ -294,7 +296,9 @@ void consumer_ring_queue_to_terminal(struct MESA_shm_queue_head *head, int produ
payload_len = *p_payload_len;
payload = (char *)(p_payload_len + 1);
n = snprintf(buf, sizeof(buf), "pid:%d, %s\n", producer_pid, payload);
write(STDOUT_FILENO, buf, n);
if(g_cur_tty_fd > 0){
write(g_cur_tty_fd, buf, n);
}
head->rd_idx = (head->rd_idx + 1) % head->blknum;
}
return ;
@@ -482,7 +486,41 @@ void kill_old_process(char *process_name)
pclose(fp);
return ;
}
int get_cur_tty_fd()
{
FILE *fp = NULL;
char cur_tty_name[DEFAUT_BUF_SIZE] = {0};
char command[DEFAUT_BUF_SIZE] = {0};
char *p = NULL;
int cur_tty_fd = -1;
snprintf(command, sizeof(command), "tty");
fp = popen(command, "r");
if(fp == NULL){
return -1;
}
if((fgets(cur_tty_name, sizeof(cur_tty_name), fp)) != NULL){
if(strncmp(cur_tty_name, "/dev/pts/", strlen("/dev/pts/")) != 0){
goto error;
}
p = strchr(cur_tty_name, '\n');
if(p == NULL){
goto error;
}
*p = '\0';
cur_tty_fd = open(cur_tty_name, O_WRONLY);
if(cur_tty_fd < 0){
goto error;
}
}else{
goto error;
}
pclose(fp);
return cur_tty_fd;
error:
pclose(fp);
return -1;
}
void print_help(char *exe_name)
{
@@ -510,6 +548,8 @@ int main(int argc, char **argv)
kill_old_process(exe_name);
if(g_output_mode == CONSUMER_OUTPUT_MODE_FILE){
consumer_daemo();
}else{
g_cur_tty_fd = get_cur_tty_fd();
}
int i = 0;
struct MESA_shm_overview *shm_overview = NULL;