私は C++ アプリケーションを持っており、そのアプリケーションが常にソースを使用してスクリプトの 1 つを実行するようにしたいと考えています。
私が使用した:
system("source myscript");
しかし、それは機能せず、「source」コマンドを認識しません。「source」を省略すると、myscript は実行されますが、source では機能しません。
C++ でソース コマンドを実行するソリューションはありますか?
これはシェル組み込みであり、実際の実行可能ファイルではないためsource
、using を呼び出すことはできません。system
シェル スクリプトの変数を取得する場合は、別の方法でスクリプトに設定された変数を取得する必要があります。1 つの方法は、スクリプトをソースとするラッパー スクリプトを記述し、エクスポートされたすべての変数を標準出力に単純に出力することです。次に、C プログラムはラッパー スクリプトを呼び出し、出力を 1 行ずつ繰り返し処理し、各環境変数をスクリプトによって出力された値に設定します (これは、ラップされたスクリプト自体が出力を生成しないことを前提としています)。
source
はシェル コマンドであり、独立したプログラムではありません。source
現在のシェルでシェルスクリプトを実行し、そのスクリプトが現在の環境のシェル変数と関数にアクセスできるようにします。
あなたの C++ プログラムはシェルではなく、C++ プログラムのプロセスの「内部」でまったく異なる言語のスクリプトを実行しても意味がありません。