【问题标题】:Get the current macOS shell using Qt使用 Qt 获取当前的 macOS shell
【发布时间】:2021-12-16 22:24:25
【问题描述】:

根据this我可以使用这个命令得到它:

dscl . -read ~/ UserShell

所以,我用Qt写了这段代码:

QProcess p;
p.setProcessChannelMode(QProcess::MergedChannels);
p.start("dscl", QStringList() << "." << "-read" << "~/" << "UserShell");
p.waitForFinished();
auto result = QString::fromUtf8(p.readAll());

但是,result 是空的。我究竟做错了什么?此命令在终端应用程序中运行良好。

补充 #1。这行得通,但看起来很愚蠢:)

p.start("bash", QStringList() << "-c" << "dscl . -read ~/ UserShell")

【问题讨论】:

  • 使用QProcess::start 的重载将绕过shell,这意味着~/ 令牌不会扩展。您需要自己执行该扩展。

标签: macos qt qprocess dscl


【解决方案1】:

我认为唯一的选择是自己扩展~。所以像......

p.start("dscl", QStringList() << "." << "-read" << QDir::homePath() << "UserShell");

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 2015-03-31
    • 2015-12-23
    • 1970-01-01
    • 2011-05-11
    • 2017-02-20
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多