jarをダウンロードして実行するには、私のアプリ側にwgetを使用しています。問題は私の現在のセットアップwget.exeは、アプリケーションデータのフォルダに保持する必要があり、実際にはスマートではないすなわちどのようにファイルがそこに着くだろうか?アプリケーションがC++でどこで実行されているかを確認する方法
どのようにしてどこから実行されているに関係なく、アプリケーションが実行されているディレクトリを見つけるだろうか?
jarをダウンロードして実行するには、私のアプリ側にwgetを使用しています。問題は私の現在のセットアップwget.exeは、アプリケーションデータのフォルダに保持する必要があり、実際にはスマートではないすなわちどのようにファイルがそこに着くだろうか?アプリケーションがC++でどこで実行されているかを確認する方法
どのようにしてどこから実行されているに関係なく、アプリケーションが実行されているディレクトリを見つけるだろうか?
あなたは、いくつかのブーストファイルシステムの良さがあまりにも動作するはずPWD環境変数に
疲れたとき std :: cout << getenv( "PATH")これは約10のパスを吐き出します。 – THUNDERGROOVE
PATHは現在の位置ではなく、コマンドを実行するときに検索するディレクトリのリストです。私。あなたが "cd"システムを書いたときに、そのパスでcdコマンドを探します。もしあなたが望む場所にwget.exeを置くことができるならば、そのvarを使うことができます。 – kappa
を読まなければならないの窓のために何かのような...
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <iostream>
int main()
{
std::cout << boost::filesystem::current_path().string() << std::endl;
return 0;
}
これは、異なるオペレーティングシステム間でも移植可能です。 – 01100110
:Linux用
std::string calculateRunPath()
{
const unsigned int size = 500;
char buf[size] = {0};
HMODULE hModule = GetModuleHandle(NULL);
GetModuleFileName(hModule,buf, sizeof(buf));
std::string path(buf);
size_t pos = path.find_last_of('\\');
return path.substr(0, pos);
}
:
std::string calculateRunPath()
{
const unsigned int size = 500;
char path[size + 1] = {0};
size_t len = readlink("/proc/self/exe", path, size);
path[len] = 0;
char* p = strrchr(path, '/');
if(p)
*(p + 1) = 0;
else
path[0] = 0;
return std::string(path);
}
あなたppは 'wget'を起動しましたか? –
起動しましたか?いいえ? 私はsystem()コールを使ってそれを使用しています – THUNDERGROOVE
'system()'コールが他のプログラムを起動します。それがどのように機能するのですか? 'wget'は実行中でなければ何もできません。 'system()'の目的は、別のプログラムを実行させることです。 –