SORU
27 EYLÜL 2008, CUMARTESİ


Nasıl bir programı çalıştıran dizin bulabilirim?

Platform-agnostik ve filesystem-agnostik bir yöntem bir program C/C kullanarak çalıştığı gelen dizinin tam yolunu almak için var mı ? Geçerli çalışma dizini ile karıştırılmamalıdır. (Lütfen clib veya STL gibi standart onlar sürece kütüphaneler tavsiye etmem.)

Eğer platform/dosya-agnostik yöntem ise yok (belirli dosya sistemleri Windows ve Linux çözüm önerileri de bekliyoruz.)

CEVAP
13 EKİM 2008, PAZARTESİ


Burada infaz uygulamanın tam yolunu almak için kod:

Windows:

int bytes = GetModuleFileName(NULL, pBuf, len);
if(bytes == 0)
	return -1;
else
	return bytes;

Linux:

char szTmp[32];
sprintf(szTmp, "/proc/%d/exe", getpid());
int bytes = MIN(readlink(szTmp, pBuf, len), len - 1);
if(bytes >= 0)
	pBuf[bytes] = '\0';
return bytes;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • alex maybury

    alex maybury

    20 Aralık 2007
  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011