Bulma' /proc/olmadan yol s yürütülebilir kendini güncel/exe
Linux /proc/self/kolay exe var gibi geliyor bana. Ama eğer çapraz platform arabirimi ile C/C geçerli uygulama dizini bulmak için uygun bir yol olup olmadığını bilmek istiyorum. Bazı projeler elde ettik[0] ile dalga geçiyorum gördüm, ama tamamen güvenilir görünmüyor.
Eğer hiç destek,,/, sen ne yapardın?/ proc yok olan Mac OS X, söyleyecek olsaydı Kullan #ifdefs platforma özel kod yalıtmak için (örneğin NSBundle)? Ya da elde ettik gelen çalıştırılabilir dosyanın yolu anlamaya çalışın[0], $PATH falan, kenar durumlarda hataları bulmak riske?
CEVAP
OS-belirli bazı arabirimler:
- Mac OS X:
_NSGetExecutablePath()
(man 3 dyld) - Linux:
readlink /proc/self/exe
- Solaris:
getexecname()
- FreeBSD:
sysctl CTL_KERN KERN_PROC KERN_PROC_PATHNAME -1
- FreeBSDeğervar procfs:
readlink /proc/curproc/file
(FreeBSD varsayılan olarak procfs yok) - Sizi uyarıyorum:
readlink /proc/curproc/exe
- DragonFly BSD:
readlink /proc/curproc/file
- Windows:* =
NULL
*8GetModuleFileName()
Taşınabilir (ama daha az) güvenilir yöntem argv[0]
kullanmaktır. Kongre tarafından arama programı ile bir şey için ayarlanmış olabilir, ancak yürütülebilir yol adı veya $PATH
kullanarak bulunan bir adı ya da ayarlanır.
Bazı kabukları, bash ve ksh dahil olmak üzere set the environment variable "_
" idam edilmeden önce çalıştırılabilir dosyanın tam yolunu. Bu durumda getenv("_")
bunu elde etmek için kullanabilirsiniz. Ancak bu kabuklar bu çünkü güvenilmez ve hiçbir şey için ayarlanmış olabilir veya programı çalıştırmadan önce bunu hiç değişmeyen bir ana işlem arta kalan.
Yürütülebilir savaş maven olmadan başl...
Bulma güncel ve son sürümü arasındaki ...
Neden int i = 1024 * 1024 * 1024 * 102...
uygulama yürütülebilir gerekli mimaris...
Nispeten pozisyon olmadan bir unsur be...