私はCで書かれたプログラムを持っています。それのディレクトリ構造は次のようなものです:
root/
program.sh
textures/
texture1.png
program.sh
次のような方法でテクスチャをインポートします:(load_textures("./textures/texture1.png")
相対パス)。したがって、プログラムprogram.sh
はroot
ディレクトリから実行するたびにのみ機能します。
リンクprogram.sh
を実行するたびにprogram.sh
、ルートディレクトリからを実行できるようにリンクを作成したいと思います。つまり、program.sh
ルートディレクトリの外部から実行したいのです。
今、私はソースコードを変更せずにこれを行うソリューションを好みます(方法がある場合)、そうでなければ、現在のシナリオを前提として、Cでファイル/テクスチャを開くことをどのように推奨しますか?
コメントから明らかになったように、目標は別のディレクトリからプログラムを実行することでしたが、プログラムの現在の作業ディレクトリはそれ自体のディレクトリを指しています。
これはCで実行できますが(POSIXシステムでは、.sh
拡張機能のために、chdir
とexecvp
syscallの組み合わせを介して想定されます)、次のようにラッパーシェルスクリプトではるかに簡単に実行できます。
#!/bin/sh
pushd /path/to/executable
./program.sh $@
popd
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加