5

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
4

3 に答える 3

8

通常、これを行うべきではありません。一般に、デスクトップ環境によってアプリケーションの動作が異なる場合、デスクトップ環境を切り替えるユーザーにとっては驚くべきことです。

代替手段

のような DE に依存しないコマンドを使用しますxdg-open。利点:

  • 自分でロジックを書く必要はありません (xdg-utils はすでにこれを行っています)。
  • より使いやすく。ユーザーの実際の好みに従います。多くのユーザーは 1 つの DE を使用しますが、別の DE からのいくつかのアプリケーションを好みます。
  • XFCE、LXDE、Unity などの他の DE をサポートします。

たとえば、現在実行中の DE に応じて Firefox または Konqueror で URL を開く代わりに、URL を に渡してxdg-open、ユーザーの優先アプリケーションで URL を開きます。(ユーザーは Chromium ユーザーである可能性があります。) GNOME および KDE に対してハードコーディングしないでnautilusくださいdolphin。代わりに、 を使用してパスを開きますxdg-open

同様に、DE との他の形式の対話については、DE が実行しているものを推測しようとするのではなく、Freedesktop の仕様を使用するようにしてください。ファイルをごみ箱に移動する、システム トレイ アプレットを追加する、最近使用したファイル リストにファイルを追加するなどの標準が存在します。

于 2012-09-19T09:48:22.757 に答える
2

QProcess を使用して を実行しpidof foo、標準出力を確認しますか? これが必要なものでない場合は、 を検索してください/proc/

于 2010-08-10T11:53:59.597 に答える
1

pidof が行うことを行う正しい方法は、/proc 内のエントリを調べることだと思います。ここに別のスレッドがあります: popen() または system() を使用せずに名前でプロセスの PID を検索する

于 2010-07-31T03:59:33.703 に答える