هل من الممكن الحصول على اسم القابل للتنفيذ بدون المسار؟

StackOverflow https://stackoverflow.com/questions/1772401

سؤال

مرحبًا ، أحاول استخدام اسم السلسلة القابلة للتنفيذ وسلسلة الاستخدام ، أنا أستخدم argv[0] لهذا الغرض ولكن بدلاً من اسم القابل للتنفيذ نفسه ، فإنه يعطيني المسار الكامل إليه.

هل هناك أي طريقة للحصول على الاسم القابل للتنفيذ فقط؟

هل كانت مفيدة؟

المحلول

فقط ابحث عن آخر /.

const char *exename = strrchr(argv[0], '/');
if (exename)
    // skip past the last /
    ++exename;   
else
    exename = argv[0];   

نصائح أخرى

على حد علمي ، (على Linux ، على الأقل) عليك فقط استخراج الاسم القابل للتنفيذ من char* بنفسك.

أسهل طريقة للقيام بذلك هي الاستخدام basename(argv[0]), ، والتي يمكنك الحصول عليها من خلال تضمين "libgen.h".

إذا كانت متوفرة على النظام الأساسي الخاص بك ، فهناك وظيفة char *basename(char *path). يرى وثائق الاسم الأساسي.

استخدام getModuleFilename http://msdn.microsoft.com/en-us/library/ms683197٪28vs.85٪29.aspx مع وسيطة المقبض = 0

فقط استخدم الجزء الأخير من سلسلة المسار. مزيج من مكالمة إلى strrchr (احصل على محدد المسار الأخير) و EG strcpy أو على غرار نسخ الجزء من محدد المسار الأخير إلى النهاية

يمكنك استخدام getprogname() إذا تم تعيين اسم البرنامج بواسطة نظام التشغيل الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top