設定ファイルが相対パスを使用している場合、通常Linuxプログラムには設定ファイルがあります。例: "../src/config.xml"
パスの下では、実行に問題はありません。
別のパスに切り替えた場合、実行に問題があるためファイルを見つけることができません。
スクリプトを書くときは、最初に実行ファイルに移動する必要があります。その後、パスが実行されます。
この影響を排除したい場合にデッドパスを書き込めない場合は、相対パスを絶対パスに変換する必要があります。
ステップ:
1.最初に、プログラムがある場所のパスを取得します。
2.相対パスを追加してから絶対パスを取得します。
注意:現在のパスではなく、getcwdで現在のパスを取得できます。プログラムの絶対パスではなく、そのときに私はこの間違いを犯しました!
以下に、プログラムのある場所のパスを取得する方法を示します。
方法1.セキュリティ上のリスクが気にならない場合は、procfsを使用し、次にreadlinkを使用して、現在のプロセスのpidを下のディレクトリに対応させます。 fileが指す場所が読み出されます(最初にprocfsをマウントする必要があることに注意してください)。
pit_t mypid = getpid();
sprintf(strsrc、 "/proc /%d /file"、mypid);
readlink(strsrc、strdest、LEN); //LENがあなたの最良の_POSIX_PATH_MAX
方法2. realpath関数を使い、次にdirnameを使い、最後に設定ファイルの絶対パスを切り出します。 Br>
文字パス[PATH_MAX];
文字* rpath = realpath(argv [0]、パス);
LOG_IT(LOG_MAIN、LOG_DEBUG、 "argv [0]:% s、realpath%s "、argv [0]、rpath);
char * base =ベース名(パス);
char * dir = dirname(パス);
LOG_IT(LOG_MAIN、LOG_DEBUG、 "ベース:%s、ディレクトリ%s"、ベース、ディレクトリ);
char conf_file [2048];
int maxlen_conf = 2048;
snprintf(conf_file、maxlen_conf、 "%s /%s "、dir、" ../src/config.xml ");
LOG_IT(LOG_MAIN、LOG_DEBUG、" conf_file%s "、conf_file);
Windowsでは、Sogou Pinyin入力方式は語彙が多く認識率が高いためにユーザー数が多く、インストールに必要な入力方式となっています。そこ新星Sogou入
LinuxシステムへのVMwareのインストール プロジェクトの必要性から、LinuxでWindowsを仮想化する必要がありますが、情報を検索した結果、VMwar
xenserver XenCenterはネットワークカードをバインドでき、Active-ActiveモードとActive-Standbyモードをサポートしますが、Xencenterを介して1つのグルー
オープンファイルが多すぎるエラーはネットワーク上での一般的な障害であり、解決策はネットワーク上で簡単に見つけることができるオープンファイルに関するLinuxシステム構成ファイルの制限表設定値を超えると
初心者にとって、Linuxコマンドの習得はそれほど単純ではありませんが、初心者の多くはコマンドを使用したりコマンドの使用方法を知らなかったりするため、Linuxコマンドは非常に重要です。 Linuxシステムのコマンド操作を学ぶ方法。
Linuxシステムのコマンド操作スキルを習得する初心者
まず、毎日のヒント
Linuxコマンドを習得するための漸進的な方法は、毎回ターミナルを開くことで
all) Shuf -n 1) この行を追加するだけでいいです!もっと楽しくしたい場合は、cowsayをインストールすることができます。 Ubuntu /Debianの下にcowsayをインストール
データバックアップソリューションNorton Trial Report
Win7のは、ゲームインターフェイスのプロンプトのエラーコードスクリプトエラーを開く方法
Windows 7 IISのインストールと設定のチュートリアル(図)
SAMファイルを置き換えた後でWindows XPを起動できません
Windows7のシステム構成のIPv6プロトコルは何に注意を払う必要がありますか?
win7はどのように自動更新をオフにしますか? Win7の自動更新方法を閉じる
クラウドコンピューティングの導入どのデータセンターハードウェアを保持する必要があるか