Utilitaire pour création d'un fusion drive sur mac mountain lion

Bonjour,


 


Je débute en programmation et je me suis lancé dans la création d'une petite appli qui créera le fusion drive avec le minimum d'intervention de l'utilisateur, et là  je suis un peu coincé...


 


voici :


 


 


//


//  main.c


//  Fusion Drive Creator 1.0


//


//  Created by MacBook on 09/04/13.


//  Copyright (c) 2013 Stef. All rights reserved.


//


 


#include <stdio.h>


 


int main(int argc, const char * argv[])


{


 


    // Création d'une application pour la réalisation d'un fusion drive sur mac


    // Identifier les disques à  utiliser : diskutil list


    // Création du corestorage : dsikutil cs create test1 disk"x" disk"y"


    // Trouver l'UUID de l'énsemble : diskutil cs list (récupérer la valeur qui suit "Logical Volume Group"


    // Création du Fusion drive : diskutil coreStorage createVolume "xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx" jhfs+ FusionDrive 100%


    // Fini


    system("diskutil list");


    int disk1;


    printf("Numéro du Premier Disque ?\n");


    scanf("%d", &disk1);


    printf("disk%d\n", disk1);


    int disk2;


    printf("Numéro du Deuxième Disque ?\n");


    scanf("%d", &disk2);


    printf("disk%d\n", disk2);


    printf("Les numéros des Disques sont-ils corrects ?\n");


    printf("1=oui, 0=non\n");


    int reponse;


    scanf("%d", &reponse);


    printf("%d\n", reponse);


    if (reponse == 1)


        printf("Ok on y va\n");


    else


        printf("Redémarrez le programme");


    printf("Les disques qui seront fusionnés :");


    printf(" Disk%d et", disk1);


    printf(" Disk%d", disk2);


    return 0;


}k2);


 

maintenant je suis coincé... je dois créer le CoreStorage avec cette commande :

diskutil cs create test1 disk"x" disk"y"

 

disk"x" et disk"y" sont les valeur déclarées disk1 et disk2.

Le problème est que je ne sais pas comment écrire ma ligne de commande pour lancer la création du corestorage pour qu'il rappelle les valeurs disk1 et 2...

 

Je ne suis pas sûr d'être très clair...

 

Ca serait quelque chose comme ça...

system("diskutil cs create test1 diskdisk1 diskdisk2");

 

mais qui fonctionne...

 


 


L


Réponses

  • Bonjour,


    justement la fonction "system()" devrait fonctionner (il faut inclure stdlib.h). Mais tu peux aussi utiliser la classe NSTask du FondationKit  avec lequel tu peux avoir un contrôle plus "fin".


  • Ouh la... je te l'ai dit je suis débutant... la fonction system() en tout cas comme je l'ai écrite ne fonctionne pas... pour ce qui est du reste de tes conseils ça dépasse de loin le cadre de mes compétences... ne tapez pas... 

  • LexxisLexxis Membre
    avril 2013 modifié #4

    La fonction "system" fonctionne. C'est peut-être les paramètres passés à  diskutil qui posent problèmes ? 


     


     


     


     



    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, const char * argv[])
    {
        system("diskutil list");
        return 0;
    }
     
  • Je me suis mal exprimé.


    la commande : system("diskutil list"); fonctionne bien, pas de souci...


     


    J'ai juste un problème avec une nouvelle commande que je n'arrive pas à  faire fonctionner, elle doit me permettre de créer le corestorage :


     


    diskutil cs create test1 disk"x" disk"y"


     


    à  la place de "x" et "y" je voudrais mettre les valeurs déclarées pour "disk1" et "disk2" :


     


    diskutil cs create test1 disk"disk1" disk"disk2" 


     


     


    C'est là  que ça coince en fait...


     


    En tout cas merci pour les réponses.


  • AliGatorAliGator Membre, Modérateur
    avril 2013 modifié #6
    Le "problème" c'est que tu es en train de faire du C.

    Ton code est un code pur C, en ligne de commande, sans interface graphique et qui n'utilise nullement Cocoa.


    C'est très bien, ça marche très bien y'a pas de soucis. Mais ici on code plutôt en l'Objective-C (qui, en pratique est une surcouche du C) et avec le framework Cocoa.


    Du coup faut qu'on sache vers quoi tu t'orientes :
    • Tu veux faire ton programme en pur C parce que tu n'as pas l'intention d'apprendre Objective-C tout de suite, et du coup tu aimerais savoir comment construire ta chaà®ne " diskutil cs create test1 disk"disk1" disk"disk2" " en C ? (réponse courte : avec sprintf)
    • Ou bien tu as fait ce programme en C parce que tu connais le C pour te faire un prototype en ligne de commande pour l'instant, mais à  terme tu veux migrer en Objective-C pour apprendre à  faire de jolies applications OSX avec une interface graphique et tout et pas juste des programmes UNIX en C pour ligne de commande ? Si oui, autant t'orienter dans notre réponse progressivement vers les solutions en Objective-C / Cocoa qui te permettront de faire la même chose, mais de façon plus "Orienté Objet" avec des classes faites pour ça (NSTask), ça te permettra de commencer à  découvrir Objective-C et Cocoa
  • Dans l'immédiat et comme je débute je vais rester sur du C, histoire de faire au moins ce petit bout de programme...


     


    Si j'arrive à  le faire fonctionner, je pense en faire une appli avec une belle fenêtre...


     


    La tout de suite je galère un peu...


Connectez-vous ou Inscrivez-vous pour répondre.