我正在使用 C++ 处理一些 TCP/IP 连接设备的通信。设备要求发送的命令以\r\n 结束。
我正在使用一个配置文件,从中读取通信中使用的命令。
我遇到的问题是命令 \r\n 被解释为它们的 4 个字符,而不是作为回车和换行符。
我曾尝试使用 string.data(),但得到的结果与 string.c_str() 相同。
有没有什么好的功能可以从一开始就让它正确,还是我必须用正常的替换功能来解决这个问题?或者其他一些我没有想过的方式?
我想,如果我没有找到一个非常巧妙的方法来做到这一点,我只会在配置文件中省略 \r\n 并在之后添加它,但是如果没有任何困难,将它全部放在配置文件中会很好编码。我想如果我尝试用正确的字符替换四个字符 \r\n ,我还需要做一些硬编码。
谢谢你的帮助
编辑:配置文件包含这样的行。
MONITOR_REQUEST = "TVT?\r\n"
我已经创建了一个 RPM SPEC 文件,但我在启用和启动 Systemd 方面遇到了困难。通过 yum 更新软件包会禁用并停止该服务。发行版是Centos 7.x
我已将该服务安装在/etc/systemd/system下。这就是我尝试过的目的,但它不起作用。
我还没有找到任何关于如何做到这一点的好的工作示例。
我使用此页面作为参考。 https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax
#Pre installation/upgrade of RPM section
%pre
#Upgrading
if [ $1 -eq 2 ]; then
/usr/bin/systemctl stop %{pkgname}.service >/dev/null 2>&1 ||:
fi
%post
%systemd_post %{pkgname}.service
if [ $1 -eq 1 ]; then
/usr/bin/systemctl daemon-reload
/usr/bin/systemctl start %{pkgname}.service
fi
if [ $1 -eq 2 ]; then
/usr/bin/systemctl daemon-reload
/usr/bin/systemctl start %{pkgname}.service
fi
%preun
%systemd_preun %{pkgname}.service
#old package
#uninstall
if [ $1 -eq 0 ]; then
/usr/bin/systemctl --no-reload disable …Run Code Online (Sandbox Code Playgroud)