我正在使用QProcess来获取haproxy的路径。它不能在Macos上很好地工作,但是在Linux上可以完美地工作。
这是我的一部分代码:
QString haProxyPath = NULL;
// try to find haproxy correctly
QProcess shellProcess;
shellProcess.start("/bin/sh");
shellProcess.write("which haproxy");
shellProcess.closeWriteChannel();
shellProcess.waitForFinished(-1);
haProxyPath = shellProcess.readAllStandardOutput().trimmed();
// linux shows the right path
// Macosx just show ""
qDebug() << "HAProxy Path " << haProxyPath;
// ha proxy location not found if output from command is empty
if (haProxyPath.isEmpty()) {
qDebug() << "HAProxy not found!";
return false;
}
但是如果在Macosx终端上使用which haproxy
,我可以获得正确的值。
我使用了QT文档作为参考:http://doc.qt.io/qt-5/qprocess.html
有什么主意吗?
我找到了解决问题的一种方法,但是我认为这不是最好的方法。 我正在检查是否有haproxy文件:
#if defined(Q_OS_MAC)
// verify if thw haproxy exist in Mac if not send an alert
QFileInfo check_haproxy_exist_osx("/usr/local/bin/haproxy");
if(check_haproxy_exist_osx.exists()){
haProxyPath = "/usr/local/bin/haproxy";
}
#endif