问题如下:
我有一个任务是在 Raspberry Pi 上编写石英时钟驱动程序,该驱动程序应允许并发访问以进行读取/写入。因此,我使用信号量来阻止访问。
现在我想测试一下,因此我必须运行
sudo hwclock -r -f ...
我的想法是用C编写一个程序以使该测试自动进行,并使用fork来并行运行访问。但是我无法以超级用户身份运行该程序,因为我对 Pi 没有这些权限。
我想做的是:
system("echo pass\"word | sudo -S hwclock --set --date \"7/20/37 12:00:00\" -f /dev/<device>");
和
system("echo pass\x22word | sudo -S hwclock --set --date \"7/20/37 12:00:00\" -f /dev/<device>");
都给我错误
sh: 1: Syntax error: Unterminated quoated string
使用“密码” 而不是“ pass \”单词” 运行程序可以正常工作。
所以我需要某种方式让程序“输入” 为我提供密码。
希望有人可以帮助我解决这个问题或为我指明正确的方向。 感谢其他完成测试的方法。
答案 0 :(得分:4)
使用"pass\"word"
时,您只对C字符串的双引号进行了转义,但在外壳程序中仍未转义。这意味着您尝试执行echo pass"word
,它的确是一个未终止的字符串。
您还需要在正在执行的shell命令中转义双引号,例如"pass\\\"word"
。这就是外壳中的命令echo pass\"word
。