diskutil, NSTask et NSPipe
BertrandMartin
Membre
Bonjour à tous
Je teste en ce moment pas mal de distributions Linux,BSD et autres et, pour éviter de graver un CD à chaque fois, j'utilise une clé USB. Pour "graver" l'image disque (souvent en .iso), j'utilise une procédure en ligne de commande :
diskutil list pour connaà®tre la liste des disques du mac et pour repérer la clé (qui est souvent /dev/disk1)
puis
diskutil unmountDisk /dev/disk1 pour démonter la clé
et pour finir
sudo dd if=/chemin/vers/image.iso of=/dev/disk1 pour "graver" l'image.
Cette procédure marche bien et me donne satisfaction. Seulement, je souhaiterai faire une interface graphique. Pour ce faire, j'ai fait un premier essai sur la première partie de la procédure. Je souhaite récupérer dans une NSString (que je pourrai traiter par la suite) la réponse de "diskutil list". J'ai donc entré le code suivant :
et j'ai dans la console le message suivant :
Je pense qu'il a besoin du chemin complet du programme diskutil mais j'ai beau fouiller mon disque dur, je ne le trouve pas (et même en affichant les fichiers cachés) . Alors, comment faire ?
Je teste en ce moment pas mal de distributions Linux,BSD et autres et, pour éviter de graver un CD à chaque fois, j'utilise une clé USB. Pour "graver" l'image disque (souvent en .iso), j'utilise une procédure en ligne de commande :
diskutil list pour connaà®tre la liste des disques du mac et pour repérer la clé (qui est souvent /dev/disk1)
puis
diskutil unmountDisk /dev/disk1 pour démonter la clé
et pour finir
sudo dd if=/chemin/vers/image.iso of=/dev/disk1 pour "graver" l'image.
Cette procédure marche bien et me donne satisfaction. Seulement, je souhaiterai faire une interface graphique. Pour ce faire, j'ai fait un premier essai sur la première partie de la procédure. Je souhaite récupérer dans une NSString (que je pourrai traiter par la suite) la réponse de "diskutil list". J'ai donc entré le code suivant :
<br />
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {<br />
NSData* data;<br />
NSTask *task=[[NSTask alloc]init];<br />
NSPipe *pipe=[[NSPipe alloc]init];<br />
<br />
NSString *command=@"diskutil";<br />
[task setLaunchPath:command];<br />
[task setArguments:[NSArray arrayWithObject:@"list"]];<br />
[task setStandardOutput:pipe];<br />
[task launch];<br />
data= [[pipe fileHandleForReading]readDataToEndOfFile];<br />
NSString *answer=[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];<br />
NSLog(@"%@",answer);<br />
}<br />
et j'ai dans la console le message suivant :
<br />
2013-03-03 11:09:16.994 BurnUSB[1684:a0f] launch path not accessible<br />
Je pense qu'il a besoin du chemin complet du programme diskutil mais j'ai beau fouiller mon disque dur, je ne le trouve pas (et même en affichant les fichiers cachés) . Alors, comment faire ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Effectivement, avec l'utilitaire de disque il faut d'abord convertir le fichier iso en fichier dmg et l'analyser pour une procédure de restauration. Mais ça marche quand même et c'est plus rapide et fiable IMHO que de se développer une application qui joue avec de la détection de clef et du dd...
Bon OK on va s'arrêter là .
Allez, dans un tout autre registre, faire un tour sur http://www.cfp-radio.com/forum/ ou bien sur http://www.projetg5.com/phpbb3/, vous verrez un forum vraiment utile ou l'on trouve de l'information (de la vraie, pas des liens google) et du respect
Salut, bande de nazes !
Ceci était mon dernier post
On propose des solutions alternatives pour leur simplifier la vie en se disant qu'ils ne connaissent peut-être pas, et ils prennent ça comme un reproche...
OUAH Y-a de l'ambiance ici !!!
Tu es bien sur d'avoir été sur d'autres forum français sur le dev ?
Le seul autre que je connaisse t'aurait réservé un tout autre accueil si tu avais débarqué avec ce genre de certitudes !
En plus, je parie qu'avant une semaine te te repointes avec un autre pseudo pour ne pas avoir l'ai c...
Bon dev... /cool.gif' class='bbc_emoticon' alt='8--)' />
Bon en tout cas moi je note qu'il existe ça : "Ce forum est dédié à ceux qui aiment la radio et la télévision à lampes."
C'est pas dingue ? ^^
Les discours ci-dessus montrent que plus on est, plus on a une chance de trouver un mécontent!
/rolleyes.gif' class='bbc_emoticon' alt='::)' /> Si ce n'est pas une belle Lapalissade ça!!
Et puis quand on voit la seule réponse actuelle http://www.gingerbeardman.com/dd-gui/ comme "Graphical User Interface" il est sûr qu'on peut faire mieux avec Cocoa et NSTask !
Mais bon, c'est un de plus dans la longue liste de ceux qui pensent que le plus simple c'est d'avoir tout de suite la solution. Ce qui n'est pas faux non plus /smile.png' class='bbc_emoticon' alt=':)' /> sauf que c'est pas forcément le plus simple à obtenir sans oublier le dilemme filet || poisson tout ça ..
Bon vent alors (ou pas) !