我正在编写一个可以在 Linux 和 Windows 上运行的应用程序。为了便于携带,换行被视为\r\n。这个应用程序正在记录一些有用的信息以进行调试。它是在 Linux 中记录信息的系统日志。打开 syslog 文件时,所有的 \r 字符都显示为 ^M。我发现在 syslog 文件上使用 dos2unix 会删除 ^M。但我想在 ^M 进入系统日志时删除它们。如果除了更改代码(使用#ifdefs)之外还有任何配置设置或任何其他解决方法,请有人提供。谢谢 ...
问问题
955 次
2 回答
0
如果您不在 Windows 上,请不要写 \r。
您可以定义一个 NEWLINE 常量,如下所示:
#ifdef _WINDOWS
#define NEWLINE '\r\n'
#else
#define NEWLINE '\n'
#endif
并使用它。
请参阅此处了解更多信息。
于 2013-06-07T08:59:46.743 回答
0
在 Linux 中使用 Windows 新行不是“可移植的”。
您应该更改代码,而不是在 Windows 或 Linux 中记录 \r 或 \n,在 syslog 中记录新行是不好的做法,因为“传统”记录格式用 \n 分隔文件。如果您有任何额外的 \n 工具读取文件将会中断。通常,新行分隔文件中不以“<”开头的任何文本都会被删除。
如果您使用 rsyslog,您可以使用drop-cc去除消息中的控制字符。
于 2017-10-18T10:10:57.437 回答