我如何从execvp()(在C或C ++中)调用“ Systemd-run”“ -user” ...而无需密码

问题描述 投票:0回答:1

当我打电话时

systemd-run "--user" "--pipe" "echo" "hello"
我在没有密码弹出的情况下获得预期的输出“ Hello”(加上一些SystemD单位信息)。

但是,当我运行时,使用C ++程序中的完全相同的参数通过

systemd-run

execvp()
启动了使用
execvpe()
.
的弹出窗口。
示例:

Authentication is required to start transient unit

我可以避免使用此身份验证弹出要求(在使用C ++时)?最好使用没有策略修改的默认系统D。

(我正在尝试制作一个快速的工具来运行子命令,同时防止指定目录之外的意外文件修改,例如“安全”构建)。


中缺少

#include <unistd.h> int main(int argc, char const* const argv[], char const* const envp[]) { char const* argp[] = { "--user", "--pipe", "echo", "hello", nullptr, }; //::execvp("systemd-run", const_cast<char**>(argp)); // alternative call, same result ::execvpe("systemd-run", const_cast<char**>(argp), const_cast<char**>(envp)); }
linux systemd
1个回答
0
投票

program

您的版本正在运行此命令:
argp
,原因是它要求密码的原因。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.