print to console or file

/*----------------------------------------------------------------------*/
/*              Debug for embeded board, 2008-2-26, Rain.               */
/*----------------------------------------------------------------------*/
#define  PRINT_DEBUG    1
#define  UNDERLINE              "33[4m"
#define  BLACK                  "33[30m"
#define  RED                    "33[31m"
#define  GREEN                  "33[32m"
#define  YELLOW                 "33[33m"
#define  BLUE                   "33[34m"
#define  PURPLE                 "33[35m"
#define  DARKGREEN              "33[36m"
#define  WHITE                  "33[37m"
#define  BG_BLACK               "33[40m"
#define  BG_RED                 "33[41m"
#define  BG_GREEN               "33[42m"
#define  BG_YELLOW              "33[43m"
#define  BG_BLUE                "33[44m"
#define  BG_PURPLE              "33[45m"
#define  BG_DARKGREEN           "33[46m"
#define  BG_WHITE               "33[47m"
#define  CLOSE                  "33[0m"
#define cprintf(fmt, args...) do           
{                                              
    FILE *fp1 = fopen("/dev/tty", "a");
    FILE *fp2 = fopen("/tmp/dbg.txt", "a");
    int  flag = 0;                         
    if (fp1 && (flag == 0 || flag == 2)) { 
        fprintf(fp1, fmt, ## args);    
        fclose(fp1);                   
    }                                      
    if (fp2 && (flag == 1 || flag == 2)) { 
        fprintf(fp2, fmt, ## args);    
        fclose(fp2);                   
    }
} while (0)

#ifdef  PRINT_DEBUG
#define dbg(fmt, args...)   
    cprintf("==> CGI_DEBUG %s | %s %d | " fmt CLOSE, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define dbg(fmt, args...)
#endif
/*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*/
/*              Debug for SSH terminal, 2008-2-26, Rain.                */
/*----------------------------------------------------------------------*/
#define  PRINT_DEBUG    1
#define  UNDERLINE              "33[4m"
#define  BLACK                  "33[30m"
#define  RED                    "33[31m"
#define  GREEN                  "33[32m"
#define  YELLOW                 "33[33m"
#define  BLUE                   "33[34m"
#define  PURPLE                 "33[35m"
#define  DARKGREEN              "33[36m"
#define  WHITE                  "33[37m"
#define  BG_BLACK               "33[40m"
#define  BG_RED                 "33[41m"
#define  BG_GREEN               "33[42m"
#define  BG_YELLOW              "33[43m"
#define  BG_BLUE                "33[44m"
#define  BG_PURPLE              "33[45m"
#define  BG_DARKGREEN           "33[46m"
#define  BG_WHITE               "33[47m"
#define  CLOSE                  "33[0m"
#define cprintf(fmt, args...) do           
{                                              
    char *dev = getenv("SSH_TTY");         
    FILE *fp1 = fopen(dev, "a");           
    FILE *fp2 = fopen("/tmp/dbg.txt", "a");
    int  flag = 0;                         
    if (fp1 && (flag == 0 || flag == 2)) { 
        fprintf(fp1, fmt, ## args);    
        fclose(fp1);                   
    }                                      
    if (fp2 && (flag == 1 || flag == 2)) { 
        fprintf(fp2, fmt, ## args);    
        fclose(fp2);                   
    }
} while (0)

#ifdef  PRINT_DEBUG
#define dbg(fmt, args...)   
    cprintf("==> CGI_DEBUG %s | %s %d | " fmt CLOSE, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define dbg(fmt, args...)
#endif
/*----------------------------------------------------------------------*/

原文地址:https://www.cnblogs.com/lytwajue/p/7352525.html