// readlink() will fail if called on real path, so if we have real path, then just // use it if (!S_ISLNK(sb.st_mode)) { return tstring(in.data(), in.size() - 1/* don't count trailing '0' */);
}
// Get real path, since _NSGetExecutablePath can return symbolic link
ssize_t len = readlink(in.data(), out.data(), PATH_MAX); if (len < 0) {
JP_THROW(tstrings::any() << "readlink(" << in.data()
<< ") failed. Error: " << lastCRTError());
}
return tstring(out.data(), len);
}
tstring getProcessModulePath() {
std::vector<char> buffer;
uint32_t bufferSize = 0; do { int len = _NSGetExecutablePath(buffer.data(), &bufferSize); if (len == 0) { break;
}
if (len > 0) {
JP_THROW(tstrings::any() << "_NSGetExecutablePath() failed");
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.