[Résolu] Exécution sous unix

Exécution sous unix [Résolu] - C - Programmation

Marsh Posté le 27-11-2005 à 20:40:21    

Bonjour,
 
Je souhaite faire un petit programme en C sous Unix.
Le but est que mon programme principal puisse lancer un exécutable qui provient d'une fonction qui reçoit un entier en paramètre. Voilà ce que j'ai fait :
fonction.c :
void fonction(int n)
{
    int i,somme=0;
    for(i=0;i<=n;i++)
    {
         somme+=i;
    }
    printf("La somme vaut : %d",somme);
}
 
 
programme principal :
int main()
{
    printf("Sur quel entier voulez-vous effectuer le calcul?\n" );
    scanf("%d",&n);
 
    **
 
    sleep(2000);
}
 
 
Mon problème est que je ne vois pas comment utiliser la commande exécution sur mon éxecutable tout en rentrant l'entier n en paramètre.  
Dois-je faire en commande unix un gcc fonction.c -o fonction puis en (**) faire un execlp? Ou alors faire en (**) un execlp("gcc","gcc","fonction.c","-o","fonction","NULL" )? mais le problème est que je ne vois pas où je peux mettre mon n  :??:  
Merci par avance.

Message cité 1 fois
Message édité par Jeandoe le 28-11-2005 à 00:43:35
Reply

Marsh Posté le 27-11-2005 à 20:40:21   

Reply

Marsh Posté le 27-11-2005 à 20:58:21    

Jeandoe a écrit :

Bonjour,
 
Je souhaite faire un petit programme en C sous Unix.
Le but est que mon programme principal puisse lancer un exécutable qui provient d'une fonction qui reçoit un entier en paramètre. Voilà ce que j'ai fait :
fonction.c :
void fonction(int n)
{
    int i,somme=0;
    for(i=0;i<=n;i++)
    {
         somme+=i;
    }
    printf("La somme vaut : %d",somme);
}
 
 
programme principal :
int main()
{
    printf("Sur quel entier voulez-vous effectuer le calcul?\n" );
    scanf("%d",&n);
 
    **
 
    sleep(2000);
}
 
 
Mon problème est que je ne vois pas comment utiliser la commande exécution sur mon éxecutable tout en rentrant l'entier n en paramètre.  
Dois-je faire en commande unix un gcc fonction.c -o fonction puis en (**) faire un execlp? Ou alors faire en (**) un execlp("gcc","gcc","fonction.c","-o","fonction","NULL" )? mais le problème est que je ne vois pas où je peux mettre mon n  :??:  
Merci par avance.


 
Je dois avouer que tu as exposé ton problème avec une certaine aisance et une très grande clarté . Donc voilà ce que j'ai compris...
Tu voudrais écrire un programme n° 1 qui fait saisir un nombre... et tu voudrais appeler un programme n° 2 en lui passant ce nombre en paramètre
Il te faut d'abord écrire le programme n° 2 recevant un paramètre

int main (int argc, argv[])
{
      int nb;
 
     // Le paramètre reçu se trouve stocké dans "argv[1]" sous forme de chaîne
     // Il te faut le convertir en nombre
     nb=strtol(argv[1], NULL, 10);
 
     // Tu peux maintenant utiliser "nb" comme un nombre et le traiter comme tu veux
    ...
}


 
Maintenant, tu peux écrire le programme n° 1 faisant saisir un nombre et le passant au programme n° 2

int main ()
{
      char saisie[100];         // Zone de saisie
 
      // Saisie d'un nombre dans la zone
      scanf(...);
 
      // Appel du programme n° 2 en lui passant la valeur saisie
      execl("chemin/nom_programme 2", "nom_programme 2", saisie, NULL);
}


 
Tu compiles tes 2 programmes en y rajouant les headers qui vont bien ("man strtol" et "man execl" pour ça)... et tu lances le n° 1


Message édité par Sve@r le 27-11-2005 à 21:01:14

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 27-11-2005 à 23:05:44    

Tu as tout compris et ce que tu m'as donné fonctionne à merveille.
Merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed