0

我正在编写一个可以在 Linux 和 Windows 上运行的应用程序。为了便于携带,换行被视为\r\n。这个应用程序正在记录一些有用的信息以进行调试。它是在 Linux 中记录信息的系统日志。打开 syslog 文件时,所有的 \r 字符都显示为 ^M。我发现在 syslog 文件上使用 dos2unix 会删除 ^M。但我想在 ^M 进入系统日志时删除它们。如果除了更改代码(使用#ifdefs)之外还有任何配置设置或任何其他解决方法,请有人提供。谢谢 ...

4

2 回答 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 回答