使用tty命令获取当前终端名称,将日志输出到当前终端
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user