gpt4 book ai didi

c - 转义“在 system() 内部调用以用于 echo 命令

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:17 25 4
gpt4 key购买 nike

问题如下:

我的任务是为 Raspberry Pi 上的 quartz 时钟编写驱动程序,该驱动程序应允许并发访问读取/写入。因此我使用信号量来阻止访问。

现在我想测试这个,所以我必须运行

sudo hwclock -r -f ...

我的想法是用 C 语言编写一个程序来使这个测试自动化,并使用 fork 来并发运行 access。但我无法以 super 用户身份运行该程序,因为我在 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

使用 "password" 而不是 "pass\"word" 运行程序没有错误。

所以我需要一些方法让程序为我“输入”密码。

希望有人可以帮助我解决这个问题或为我指明正确的方向。其他完成测试的方法表示赞赏。

最佳答案

使用 "pass\"word" 你只是转义 C 字符串的双引号,它仍然没有在 shell 中转义。这意味着你尝试执行 echo pass"word ,这确实是一个未终止的字符串。

您还需要转义正在执行的 shell 命令中的双引号,如 "pass\\\"word"。这将是命令 echo pass\"shell 中的单词

关于c - 转义“在 system() 内部调用以用于 echo 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51593591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com