问题描述:使用linenoise库实现命令行管理,和目标进程之间使用网络通信。在运行自己的命令行控制程序时,目标进程中printf("\n")无法正常换行了。
问题原因:llinenoise在等待命令输入时,使能了RawMode,在处理RawMode过程中,对termios中的c_oflag做了修改,源码为:raw.c_oflag &= ~(OPOST),问题出在这个地方,控制台输出处理能力被屏蔽了,导致其他进程使用"\n"换行时,出现了问题。
解决方法:注释掉raw.c_oflag &= ~(OPOST);保持c_oflag的默认配置,问题即可解决。