使用tty命令获取当前终端名称,将日志输出到当前终端
This commit is contained in:
@@ -24,6 +24,8 @@
|
|||||||
#define CONSUMER_CARE_PID_SPEC 1
|
#define CONSUMER_CARE_PID_SPEC 1
|
||||||
#define CONSUMER_CARE_PID_MAX_LEN 128
|
#define CONSUMER_CARE_PID_MAX_LEN 128
|
||||||
|
|
||||||
|
int g_cur_tty_fd = -1;
|
||||||
|
|
||||||
struct log_file_list{
|
struct log_file_list{
|
||||||
char log_file_pre[MESA_SHM_LOG_PATH_LEN];
|
char log_file_pre[MESA_SHM_LOG_PATH_LEN];
|
||||||
char real_log_file[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_len = *p_payload_len;
|
||||||
payload = (char *)(p_payload_len + 1);
|
payload = (char *)(p_payload_len + 1);
|
||||||
n = snprintf(buf, sizeof(buf), "pid:%d, %s\n", producer_pid, payload);
|
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;
|
head->rd_idx = (head->rd_idx + 1) % head->blknum;
|
||||||
}
|
}
|
||||||
return ;
|
return ;
|
||||||
@@ -482,7 +486,41 @@ void kill_old_process(char *process_name)
|
|||||||
pclose(fp);
|
pclose(fp);
|
||||||
return ;
|
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)
|
void print_help(char *exe_name)
|
||||||
{
|
{
|
||||||
@@ -510,6 +548,8 @@ int main(int argc, char **argv)
|
|||||||
kill_old_process(exe_name);
|
kill_old_process(exe_name);
|
||||||
if(g_output_mode == CONSUMER_OUTPUT_MODE_FILE){
|
if(g_output_mode == CONSUMER_OUTPUT_MODE_FILE){
|
||||||
consumer_daemo();
|
consumer_daemo();
|
||||||
|
}else{
|
||||||
|
g_cur_tty_fd = get_cur_tty_fd();
|
||||||
}
|
}
|
||||||
int i = 0;
|
int i = 0;
|
||||||
struct MESA_shm_overview *shm_overview = NULL;
|
struct MESA_shm_overview *shm_overview = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user