主要是这两段程序不懂,那个stdout和stderr不懂。。
void OutputStdChar(FILE *File) {//向设备写数据,打开一个串口,声明并且定义该函数
char Buffer[10];
int Len = sprintf(Buffer, OutputHex ? "%.2X " : "%c", Char);//将char中数据写到buff中
fwrite(Buffer, 1, Len, File);//将 buffer 中的数据写入到file中去,写入的 len个字符数
}
if (FD_ISSET(CommFd, &ReadSetFD)) {//判断串口是否可读
while (read(CommFd, &Char, 1) == 1) {//从串口中读取一个值
WaitFdWriteable(TtyFd);//等待终端可写
if (write(TtyFd, &Char, 1) < 0) {
Error(strerror(errno));
}
if (OutputToStdout) {
if (UseColor)
fwrite("x1b[01;34m", 1, 8, stdout);
OutputStdChar(stdout);//向设备写数据,stdout标准输出,默认是终端
if (UseColor)
fwrite("x1b[00m", 1, 8, stdout);
fflush(stdout);
}
}
}
if (FD_ISSET(TtyFd, &ReadSetFD)) {//判断终端是否可读
while (read(TtyFd, &Char, 1) == 1) {
sta
tic int EscKeyCount = 0;
WaitFdWriteable(CommFd);
if (write(CommFd, &Char, 1) < 0) {
Error(strerror(errno));
}
if (OutputToStdout) {
if (UseColor)
fwrite("x1b[01;31m", 1, 8, stderr);//标准输出(设备)文件,对应终端的屏幕
OutputStdChar(stderr);//???
if (UseColor)
fwrite("x1b[00m", 1, 8, stderr);
fflush(stderr);
}
描述为标准输出,标准输入,标准错误输出;
这些设备都可以重定向到其他设备或文件。
stderr是标准出错 没缓存 直接打印到屏幕
fwrite("x1b[01;31m", 1, 8, stderr) 中 的字符串估计是一种控制台编码 比如改变输出字符颜 {MOD}。
一周热门 更多>