Pfad der Binary
Verfasst: 10.04.2006 22:19
Wie kann man (unter Linux) den Pfad seiner Binary ermitteln?
Code: Alles auswählen
mem=AllocateMemory(1024)
b.s="/proc/self/exe"
c.l=@b
!mov eax,85 ;int sys_readlink(const char * path, char * buf, int bufsiz)
!mov ebx,[v_c]
!mov ecx,[v_mem]
!mov edx,1024
!int 0x80
MessageRequester("",GetPathPart(PeekS(mem)))
Code: Alles auswählen
Procedure.s GetAppDir()
Protected lBuffer.l, lLen.l
Protected sOut.s
lBuffer = AllocateMemory(2048+1)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
GetModuleFileName_(#Null, lBuffer, #MAX_PATH)
sOut = GetPathPart(PeekS(lBuffer))
If Right(sOut, 1) <> "\": sOut + "\": EndIf
CompilerCase #PB_OS_Linux
lLen = Readlink_("/proc/" + Str(getpid_()) + "/exe", lBuffer, 2048)
sOut = GetPathPart(PeekS(lBuffer, lLen))
CompilerEndSelect
FreeMemory(lBuffer)
ProcedureReturn sOut
EndProcedure
Procedure.s GetAppName()
Protected lBuffer.l, lLen.l
Protected sOut.s
lBuffer = AllocateMemory(2048+1)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
GetModuleFileName_(#Null, lBuffer, 2048)
sOut = GetFilePart(PeekS(lBuffer))
CompilerCase #PB_OS_Linux
lLen = Readlink_("/proc/" + Str(getpid_()) + "/exe", lBuffer, 2048)
sOut = GetFilePart(PeekS(lBuffer, lLen))
CompilerEndSelect
FreeMemory(lBuffer)
ProcedureReturn sOut
EndProcedure