Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/04/2007, 21h30   #1
Membre à l'essai
 
Inscription : août 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 171
Points : 21
Points : 21
Par défaut comment ecrire une fonction sortir

Bonsoir,
Je veux realiser un programme en C, dans un fichier unique, quialisealiser un programme en C, dans un fichier unique, qui implémente une commande "sortir" : on fournit à cette commande un argument qui est la valeur avec laquelle elle doit se terminer. Exemples :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$ sortir 12
    $ echo $?
    12
    $ sortir 0
    $ echo $?
    0
    $ # sortir sans argument
    $ sortir
    usage: sortir N
    $ # sortir avec trop d'arguments
    $ sortir 1 2 3
    usage: sortir N
La commande n'imprime rien, sauf en cas d'erreur ; elle imprime
alors un message d'erreur sur stderr (pas sur stdout !). Attention
au cas particulier où l'argument est un multiple de 256.
momeftah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 10h17   #2
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
oui et alors ? tu n'as rien commencé ?
regarde la fonction C exit.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 12h08   #3
Membre à l'essai
 
Inscription : août 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 171
Points : 21
Points : 21
voilà j'ai essayé ça !
Code :
1
2
3
4
5
6
7
8
9
 
#include<stdio.h>
#include<unistd.h>
 
int main() {
  execl("exit", "sortir", 0);
  perror("exit");
  return 1;
}
momeftah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 09h39   #4
Rédacteur
 
Avatar de Davidbrcz
 
Homme
1A Supaéro
Inscription : juin 2006
Messages : 2 089
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 20

Informations professionnelles :
Activité : 1A Supaéro

Informations forums :
Inscription : juin 2006
Messages : 2 089
Points : 2 799
Points : 2 799
Envoyer un message via MSN à Davidbrcz
http://man.developpez.com/man3/exit.3.php
Code :
1
2
3
4
5
6
7
8
9
10
11
 
#include <stdlib.h>
#include <stdio.h>
 
int main(int argc,char *argv[])
{
printf("Salut");
exit(0);
printf("Code jamais execute");
return 0;
}
__________________
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)

Mes articles dont Conseils divers sur le C++
Une très bonne doc sur la STL (en) Why linux is better (fr)
Davidbrcz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 11h56   #5
Membre à l'essai
 
Inscription : août 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 171
Points : 21
Points : 21
Citation:
Envoyé par Davidbrcz
http://man.developpez.com/man3/exit.3.php
Code :
1
2
3
4
5
6
7
8
9
10
11
 
#include <stdlib.h>
#include <stdio.h>
 
int main(int argc,char *argv[])
{
printf("Salut");
exit(0);
printf("Code jamais execute");
return 0;
}
ça fait pas ce que je veux regardes ma première question
merci comeme.
momeftah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 15h21   #6
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
si cela ne fait pas ce que tu désire, peut être que tu ne désire pas faire grand choses , tout est la, plus la lecture du man et ce que tu as besoin se serra
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 19h28   #7
Membre à l'essai
 
Inscription : août 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 171
Points : 21
Points : 21
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char * argv[]) {
  int s;
  if(argc == 1) {
    fprintf(stderr, "sortir sans argument \n");
  }
  else if(argc > 2) {
    fprintf(stderr, "sortir trop d'arguments \n");
  }
  s = atoi(argv[1]);
  return s; 
}
merci j'ai réussi à trouver le code mais comeme il mafiche segmentation fault en compilant et exécutant le fichier avec
$gcc -Wall sortir.c -o sortir
$./sortir 4
$echo $?
$4
$./sortir
$ ./sortir
sortir sans argument
Segmentation fault
$./sortir 4 5
$ ./sortir
sortir trop d'arguments


merci si vous pouvez m'aider pour ne pas afficher le segmentation fault;
sinon c'est pas grave
momeftah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 14h14   #8
Membre actif
 
Inscription : mars 2007
Messages : 171
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 171
Points : 171
Points : 171
Pose toi la question suivante :

Que dois faire ton programme dans le cas du argc == 1 ou > 2, après avoir affiché
ton message d'erreur ?
ericduval est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 14h35   #9
Membre à l'essai
 
Inscription : août 2006
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 171
Points : 21
Points : 21
Citation:
Envoyé par ericduval
Pose toi la question suivante :

Que dois faire ton programme dans le cas du argc == 1 ou > 2, après avoir affiché
ton message d'erreur ?
Eh ben ! tu testeras le programme avec:
$gcc -Wall sortir.c -o sortir
$./sortir ..................... regardes ma première question tu comprendras
en fait mon programme teste la valeur de sortie avec echo $? selon le nombre d'argument passés a la commande ./sortir argc argc ....
fait des testes tu comprendras.
momeftah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h05.


 
 
 
 
Partenaires

Hébergement Web