Qt5 更改当前 运行 可执行文件的软链接

Qt5 Change Softlink of Currently Running Executable

我在 Linux、"red" 和 "green" 上创建了 2 个简单的 Qt5.5 测试应用程序。我在当前目录中设置了一个初始软件 link,如下所示:

gui -> red

我希望能够随时启动 gui 应用程序并让它将软 link 切换到另一个 'color' 应用程序。所以当我 运行 gui 并且它指向红色时,下一次我 运行 gui 它将指向绿色。

执行此操作的红色应用程序代码如下所示:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    // Get the current path
    QString cwd = QDir::currentPath();
    qDebug() << cwd + "/green";
    bool success = QFile::link(cwd + "/green",cwd + "/gui");
    qDebug() << "Was successful: " << success;
}

执行此操作的绿色应用程序代码如下所示:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    // Get the current path
    QString cwd = QDir::currentPath();
    qDebug() << cwd + "/red";
    bool success = QFile::link(cwd + "/red",cwd + "/gui");
    qDebug() << "Was successful: " << success;
}

问题是 "success" 布尔值总是失败。我想我无法更改当前 运行ning 进程的软 link。我怎样才能做到这一点?

尝试在重新创建之前删除 link:

This function will not overwrite an already existing entity in the file system; in this case, link() will return false and set error() to return RenameError.

QFile::link().