2013-03-09 1 views
2

L'objectif de mon programme de ligne de commande de cacao est de prendre un argument qui est le nom d'un fichier et l'importer dans le programme d'analyse syntaxique. Je veux être en mesure d'appeler mon programme permet de dire, "ParseFile" du terminal dans mac os, avec l'argument "Filename.txt" (exemple $ ParseFile filename.txt), mais jusqu'à présent, je ne comprends pas comment mon programme peut savoir le chemin absolu vers Filename.txt.Comment puis-je faire en sorte que mon outil de ligne de commande Cocoa connaisse le chemin de travail dont il a été appelé dans le terminal?

Par exemple, lorsque vous utilisez « cp filename.txt /whateverfolder/filename2.txt » vous copiez le fichier « filename.txt » à partir du répertoire de travail courant du terminal à un dossier appelé whateverfolder sur le répertoire racine . Comment cp connait-il le chemin absolu de filename.txt? Si j'avais filename.txt sur mon bureau, je saurais que je l'ai envoyé /Users/username/Desktop/filename.txt. C'est ce que je veux que mon programme sache.

Je suis en mesure d'obtenir mon programme pour savoir où il est exécuté, mais ce qui est très différent de celui où le répertoire de travail courant du terminal bash était au moment d'être appelé.

Comment résoudre ce problème? Merci beaucoup

+1

Qu'est-ce qu'un « outil de ligne de commande Cocoa »? –

+0

un exécutable objectif de c qui est basé sur le cadre de base sans IUG – rabbitfeetz

Répondre

4

Utilisez la méthode de currentDirectoryPathNSFileManager:

NSString *currentpath = [[NSFileManager defaultManager] currentDirectoryPath]; 
+0

je na pas réaliser NSFileManager Merci c'est exactement ce que je devais, avait cette Merci beaucoup! – rabbitfeetz

2

Comment cp connaître le chemin absolu de filename.txt?

Il ne le sait pas et n'a pas à le faire. Il peut simplement utiliser le chemin relatif. Le répertoire de travail en cours est hérité du processus parent.

Je suis en mesure d'obtenir mon programme pour savoir où il est exécuté, mais ce qui est très différent de celui où le répertoire de travail courant du terminal bash était au moment d'être appelé.

Que voulez-vous dire? Le répertoire dans lequel se trouve l'exécutable? Ce n'est généralement pas très intéressant. Le seul autre répertoire qui joue un rôle dans ce contexte est le répertoire de travail en cours. Si vous l'avez déjà, de quoi d'autre avez-vous besoin?

+1

développiez 'cp' ne pas avoir à savoir: il est le noyau qui résout les chemins vers les fichiers réels sur le disque, et le noyau connaît le répertoire de travail du processus et peut donc résoudre des chemins relatifs. Cela dit, la réponse de nneonneo est également correcte en fournissant un moyen pour votre programme d'apprendre le répertoire de travail, mais ce n'est généralement pas nécessaire. –

+0

Merci! plus de caractères ... – rabbitfeetz

Questions connexes