【问题标题】:QProcess call gksudo with parameter for individualized message for calling scriptQProcess 使用参数调用 gksudo 用于调用脚本的个性化消息
【发布时间】:2014-02-21 09:04:36
【问题描述】:

如何使用 QProcess--message "text" 之类的参数解析为 /usr/bin/gksudo 以显示我的个性化文字?

只需使用 /usr/bin/gksudo 并调用我的 script.sh 即可。

这里是最小的例子:

QString cmd = QString("/usr/bin/gksudo");
QStringList param = ( QStringList << "--message my Text" << "path/to/script.sh")

QProcess.start( cmd, param );

即使我尝试将参数添加到 cmd 我也会失败。并且没有显示密码提示。

QString cmd = QString("/usr/bin/gksudo --message MyText");

【问题讨论】:

    标签: linux qt ubuntu gksudo


    【解决方案1】:

    解决方案

    --messagemy Text 都是自己的元素。

    QStringList param = ( QStringList << "--message" << tr("my Text") << "path/to/script.sh")
    

    【讨论】:

      【解决方案2】:

      QProcess 将第一个参数作为要运行的命令,然后将以下由空格分隔的参数作为参数传递给命令。

      当你这样做时:-

      QStringList param = ( QStringList << "--message my Text" << "path/to/script.sh")
      

      然后将参数传递给 QProcess,它会将“path/to/script.sh”作为命令行参数传递给 gksudo,但您想要的是带有 --message 的单个参数。您需要用额外的引号统一参数。因此,在您的最后一个示例中,这将是:-

      QString cmd = QString("/usr/bin/gksudo \"--message MyText"\");

      注意 --message MyText

      周围的另外两个 \"

      将此传递给 QProcess 意味着有两个参数;对 gksudo 的调用及其命令行参数“--message MyText

      【讨论】:

      • 我先试试”—message” &lt;&lt; “my text” &lt;&lt; “/path/to/script.sh”
      • @FrankOsterfeld,这会产生同样的问题。如果使用 QStringList,你仍然需要一个 gksudo 的参数,所以它需要
      猜你喜欢
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      相关资源
      最近更新 更多