Arbetssökväg i MacOS X (C/C++)

Avdelningen för programmering, nätverk samt alternativa OS.
Post Reply
User avatar
robin.
Posts: 315
Joined: 2003-01-05 20:34:27
Location: Strängnäs

Arbetssökväg i MacOS X (C/C++)

Post by robin. »

Börjar nästan att bli galen här, sitter och leker lite med C/C++ i MacOS X (har inte programmerat såå mycket i det än, bara varit mac:are i ca ett halvår), och kan inte hitta ett sätt att hitta sökvägen till programmet! Vill läsa in en fil som ligger i samma sökväg som programmet, men det verkar inte fungera... Kan inte hitta ett sätt att hitta sökvägen till programmet! Någon som vet?
User avatar
linc
Administratör
Posts: 7602
Joined: 2002-02-13 22:22:11
Location: Skåneland
Contact:

Post by linc »

Titta på mansidan för getcwd().
hej.
t-man
Posts: 100
Joined: 2005-11-29 15:42:32
Location: G-town

Re: Arbetssökväg i MacOS X (C/C++)

Post by t-man »

robin. wrote:Börjar nästan att bli galen här, sitter och leker lite med C/C++ i MacOS X (har inte programmerat såå mycket i det än, bara varit mac:are i ca ett halvår), och kan inte hitta ett sätt att hitta sökvägen till programmet! Vill läsa in en fil som ligger i samma sökväg som programmet, men det verkar inte fungera... Kan inte hitta ett sätt att hitta sökvägen till programmet! Någon som vet?
Menar du ungefär såhär?

Du har ett program (/foo/bar/program) och en datafil (/foo/bar/datafil), alltså ett program och en datafil i samma katalog och vill öppna datafilen oavsett vad current working directory är för en process skapad av program-imagen?

Isåfall har du 2 sätt hitta katalogen som filerna ligger i (/foo/bar) beroende på hur programmet startats.

1) Programmet startades med dess absoluta eller relativa pathname (till exempel /foo/bar/program eller ../bar/program)
Strippa bort "program" från argv[0].

2) Programmet startades med dess filnamn eftersom dess katalog finns i PATH
Leta igenom PATH tills du hittar en katalog som innehåller en exekverbar fil med namnet "program".

Nu har du katalogen (relativ eller absolut) som filerna ligger i och kan antingen chdir() till den eller koppla på "datafil" och öppna direkt.

(Får man fråga varför du behöver göra detta?)
t-man
Posts: 100
Joined: 2005-11-29 15:42:32
Location: G-town

Post by t-man »

linc wrote:Titta på mansidan för getcwd().
Vad skulle "robin." ha för nytta av det?
User avatar
robin.
Posts: 315
Joined: 2003-01-05 20:34:27
Location: Strängnäs

Post by robin. »

linc wrote:Titta på mansidan för getcwd().
Det där var precis vad jag letade efter! Tackar o bugar!

Har hittat en annan grej som jag funderar över, hur man hittar sökvägen till Resource-katalogen ("innuti" foo.app).. Känns som att man borde kunna köra getcwd() och sen lägga till "foo.app/Resources", eller? Känns samtidigt lite fult.. vet att det finns en funktion för det i Objective-C, men jag känner inte att jag har tid att sätta mig in i ett nytt språk för tillfället..
t-man
Posts: 100
Joined: 2005-11-29 15:42:32
Location: G-town

Post by t-man »

robin. wrote:
linc wrote:Titta på mansidan för getcwd().
Det där var precis vad jag letade efter! Tackar o bugar!
Då vill du med andra ord INTE "hitta ett sätt att hitta sökvägen till programmet!" utan ha namnet på processens current working direcoty.
User avatar
robin.
Posts: 315
Joined: 2003-01-05 20:34:27
Location: Strängnäs

Post by robin. »

t-man wrote:
robin. wrote:
linc wrote:Titta på mansidan för getcwd().
Det där var precis vad jag letade efter! Tackar o bugar!
Då vill du med andra ord INTE "hitta ett sätt att hitta sökvägen till programmet!" utan ha namnet på processens current working direcoty.
Ja precis! Ursäkta om jag uttryckte mig lite luddigt..
Post Reply