を含める必要がdirnameのために
:
機能
int syscommand(string aCommand, string & result) {
FILE * f;
if (!(f = popen(aCommand.c_str(), "r"))) {
cout << "Can not open file" << endl;
return NEGATIVE_ANSWER;
}
const int BUFSIZE = 4096;
char buf[ BUFSIZE ];
if (fgets(buf,BUFSIZE,f)!=NULL) {
result = buf;
}
pclose(f);
return POSITIVE_ANSWER;
}
システムコマンドを実行するために、我々はその後
string getBundleName() {
pid_t procpid = getpid();
stringstream toCom;
toCom << "cat /proc/" << procpid << "/comm";
string fRes="";
syscommand(toCom.str(),fRes);
size_t last_pos = fRes.find_last_not_of(" \n\r\t") + 1;
if (last_pos != string::npos) {
fRes.erase(last_pos);
}
return fRes;
}
アプリ名を取得アプリケーションパスを抽出します
string getBundlePath() {
pid_t procpid = getpid();
string appName = getBundleName();
stringstream command;
command << "readlink /proc/" << procpid << "/exe | sed \"s/\\(\\/" << appName << "\\)$//\"";
string fRes;
syscommand(command.str(),fRes);
return fRes;
}
は
OPはMac OS X関数を呼び出しているので、彼はUnixルーチンにアクセスできます。 – chrisaycock
SHLWAPIを持ち込んでも構わない場合は、ウィンドウでPathRemoveFileSpecを使用できます。または_splitpath_s – Stewart
私は_splitpath xDを忘れてしまいました。@chrisaycockについては、ごめんなさい、idk mac API –