ずっと前、私はC ++で一種のステルスモードの悪魔を開発し始めました。これらのいくつかはルートとして実行され、一部はホスト名をランダムに生成されたホスト名に変更するものです。私のホスト名を変更すると(仮想端末、Stealthdemon、またはdhcp機能を介して)、何らかの方法でシステムがめちゃくちゃになることを経験しました。 1つの例は、ショートカットまたはクリックしても突然すべてのKDEアプリケーションが実行されないことです。ホスト名を元のホスト名にリセットすると、すべてが完璧に見えます。
私の質問は次のとおりです
- Bashでホスト名を発行するときに何を呼び出すのですか?
- c / C ++コードでホスト名を発行するときに何を呼び出すのですか?
- 奇妙な行動の理由は何ですか? (私の意見では、xorgまたはkde自体が何らかの方法で古いホスト名に接続されている可能性がありますが、変更後はもう接続されません。)
- システムを確実に維持しながら、シェルまたはコードを介したホスト名の変更を許可するにはどうすればよいですか?
よろしくお願いします。
答え1
- X認証ファイル(
~/.Xauthority
など/tmp/xauth-*
)にはシステムホスト名が含まれています。実際のホスト名と異なる場合(図を参照hostname(1)
)、Xアプリケーションは起動しません。
私の場合、「指定されたプロトコルなしでディスプレイに接続できません:0」が印刷されました。ただし、X 認証ファイルのホスト名を実際の値に変更すると問題が解決します。 (テストには16進エディタを使用しました。まあ、変更するより良い方法が必要です)
答え2
KDE 4.13.3でも同じ問題が発生しました。私はそれを修正するために多くのことをしました(いくつかは重複しているかもしれませんが、これは確かに私にとって効果的でした)。 KDEが実行されていない場合は、コマンドラインでこれらのタスクを実行する必要があります。
.Xauthority
ホームディレクトリのファイルを削除します。.kde
ホームディレクトリのフォルダに移動します。cache-<your old hostname>
に名前が変更されましたcache-<your new hostname>
。socket-<your old hostname>
に名前が変更されましたsocket-<your new hostname>
。tmp-<your old hostname>
に名前を変更しますtmp-<your new hostname>
。このディレクトリのすべてのファイルを削除します。- ディレクトリの。
.kde
に移動して、.kde/share/config/
すべてのkwin*
ファイルを削除します(例rm kwin*
:。 - 同じディレクトリ内のディレクトリを削除します
session
。
Xサーバー(またはコンピュータ)を再起動すると、KDEが機能します。