我想知道如何使用Qt做这样的事情(source)。我查看了文档,但找不到任何方法来检查外部进程是否正在运行。
if [ "$(pidof ksmserver)" ]; then
echo "KDE running."
# KDE-specific stuff here
elif [ "$(pidof gnome-session)" ]; then
echo "GNOME running."
# GNOME-specific stuff here
elif [ "$(pidof xfce-mcs-manage)" ]; then
echo "Xfce running."
# Xfce-specific stuff here
fi
答案 0 :(得分:5)
通常你不应该这样做。通常,如果您的应用程序根据桌面环境的不同而有所不同,那么对于在它们之间切换的任何用户来说,这将是一个令人讨厌的惊喜。
使用像xdg-open
这样的与DE无关的命令。优点:
例如,不是根据当前运行的DE在Firefox或Konqueror中打开URL,而是将URL传递给xdg-open
以在用户的首选应用程序中打开它。 (用户可能是Chromium用户。)不要为GNOME和KDE硬编码nautilus
或dolphin
;而是使用xdg-open
打开路径。
同样,对于与DE的其他形式的交互,尝试使用Freedesktop specifications,而不是试图猜测DE正在运行什么。存在moving files to the trash标准,添加系统托盘小程序,以及将文件添加到“最近的文件”列表等。
答案 1 :(得分:2)
使用QProcess运行pidof foo
,然后检查其标准输出?如果这不是您想要的,请搜索/proc/
。
答案 2 :(得分:1)
我认为做pidof的正确方法是查看/ proc中的条目。这里还有另一个主题:Find PID of a Process by Name without Using popen() or system()