我需要从Qt程序启动gphoto2
。我这样做:
QString gphotoProgram = "/usr/bin/gphoto2";
QStringList gphotoArguments;
gphotoArguments << "--capture-image";
QProcess *gphotoProcess = new QProcess(this);
gphotoProcess->start(gphotoProgram, gphotoArguments);
但它永远不会以这种方式进入Running
状态,因为gphoto2
通常需要在命令行上启动管理员权限。
如何启动此QProcess
并拥有使gphoto2
正常工作的适当权利?
编辑:我确切地说我希望用户不必输入密码,这意味着gksudo,kdesudo或任何其他图形解决方案对我来说都不是一个有效的选项。
答案 0 :(得分:2)
我强烈建议找一种方法让gphoto2以登录用户的权限运行。也许this article有一些有用的信息。
答案 1 :(得分:1)
如果您启用了sudo的发行版,请尝试将“gksudo”添加到您的进程的命令行:
QString gphotoProgram = "gksudo /usr/bin/gphoto2"
如果用户帐户被授权为sudo-er,它将询问用户密码,以便程序可以使用root权限运行。
答案 2 :(得分:1)
您还可以使用PolicyKit以sudo权限启动QProcess。
pkexec命令
QString gphotoProgram =“pkexec / usr / bin / gphoto2”;
答案 3 :(得分:0)
GNOME和KDE还没有自己的图形sudo包装器吗? (我自己就是Windows用户。)你可以使用QProcess启动“sudo”,并让它处理高程和随后的gphoto启动。