IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Linux gestion des processus


Sujet :

Linux

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Linux gestion des processus
    Salut,

    J'essaie de réaliser un programme sous Linux en C qui permet de parcourir un dossier passé en argument et afficher les fichiers contenu sur ce dossier ainsi faire le même travail si dossier trouvant sur le dossier passé en argument, je veux donner a chaque processus crée de parcourir un dossier et afficher les fichiers qu'il contient: j'ai essayé ce programme mais ca marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #include <stdio.h>
    #include <dirent.h>
    #include <sys/types.h>
    //#include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/stat.h>
     
    int main(int argc,char **argv){
    	DIR *repertoire;
    	char nnam[50],nnam2[50];
    	struct stat *buff;
    	struct dirent *fich;
    	int i=1,j=0,*k; 
    	if(argc!=2){
    		printf("erreur123\n");
    		exit(0);
    		}
    	stat(argv[1],buff);
    	if(S_ISREG(buff->st_mode)!=0){
    		printf("L'argument passé est un fichier\n");
    		exit(1);
    		}
    	if(S_ISDIR(buff->st_mode)==0){
    		printf("erreur ni fichier ni dosier\n");
    		exit(2);
    		}
    	strcpy(nnam,argv[1]);
    	strcpy(nnam2,argv[1]);
    	repertoire=opendir(argv[1]);
    	printf("c un dosier de chemin:%s\n",nnam);
    	//fich=readdir(repertoire);//test
    	//printf("nom fichier:  %s\n",fich->d_name);//test
    	while((fich=readdir(repertoire))!=NULL){
     
    		strcat(nnam,"/");
    		printf("ca marche\n");
    		strcat(nnam,fich->d_name);
    		if(S_ISREG(buff->st_mode)!=0) { //si c'est un fichier 
    			printf("le fichier: %s se trouve dans le repertoire",fich->d_name);
    			strcat(nnam,nnam2);//annuler la concatenation
    			}
    		if(S_ISDIR(buff->st_mode)!=0){  //si c'est un repertoire
    			if(fork()==0){
    				//strcat(repertoire,"/");
    				//strcat(repertoire,fich->name);
    				//*repertoire=fiche->name;
    				repertoire=opendir(nnam);
    				printf("je suis dans le repertoire %s\n",nnam);
    				strcpy(nnam2,nnam);
    				i++;
    				}
    			else{
    				while((j=wait(k))==-1)
    					sleep(1);// attend la fin de processus fils
    				}
    		}
    		}
    	closedir(repertoire);
    	printf("Fin\n");
    	return 0;
    }

    SVP aidez moi :(:?

  2. #2
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 269
    Points : 2 455
    Points
    2 455
    Par défaut
    Bonjour

    Deux questions :

    1. Pourrais-tu reposer ta question en français intelligible ? Je n'ai rien compris.
    2. Pourrais-tu nous dire si ton problème vient de la compilation (dans ce cas, indique aussi le message d'erreur) ou de l'exécution ? Dans ce cas, y a-t-il plantage pur & simple, ou bien pas de nouveau processus créé... ?

    Enfin, une remarque : des commentaires dans ton code auraient été bienvenus. Même si celui-ci est court : c'est une bonne habitude à prendre & ça facilite la relecture. Même pour le programmeur.

    Bon courage

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 602
    Points : 7 837
    Points
    7 837
    Par défaut
    Une bonne indentation est indispensable pour comprendre un programme en C. Ici, je vois 2 } qui se suivent et qui sont au même niveau. Ceci n'est pas normal.
    En plus, je n'aime pas cette façon de mettre les accolades ! Je préfère largement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    déclaration de la fonction(paramètres)
    {
     texte niveau1
     texte niveau1
     {
      texte niveau 2
      texte niveau 2
      {
       texte niveau 3
       texte niveau 3
      }
      texte niveau 2
     }
     texte niveau1
     texte niveau1
    }
    Comme ça, on voit directement au les couples d'accolades.
    Pour de petits programmes, au lien d'indenter de un espace, on peut indenter d'une tabulation. Par contre, si on indente d'une tabulation (ou 8 espaces souvent) de gros programmes, ils deviennent vite illisibles car les fins de ligne sortent de l'écran !

  4. #4
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Citation Envoyé par troumad Voir le message
    Une bonne indentation est indispensable pour comprendre un programme en C. Ici, je vois 2 } qui se suivent et qui sont au même niveau. Ceci n'est pas normal.
    +1

    En plus, je n'aime pas cette façon de mettre les accolades ! Je préfère largement
    moi je prefert comme sa xD
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    déclaration de la fonction(paramètres)
    	{
    	texte niveau1
    	texte niveau1
    		{
    		texte niveau 2
    		texte niveau 2
    			{
    			texte niveau 3
    			texte niveau 3
    			}
    		texte niveau 2
    		}
    	texte niveau1
    	texte niveau1
    	}
    Pour de petits programmes, au lien d'indenter de un espace, on peut indenter d'une tabulation. Par contre, si on indente d'une tabulation (ou 8 espaces souvent) de gros programmes, ils deviennent vite illisibles car les fins de ligne sortent de l'écran !
    sufi de regler la taille de la tabulation ^^ (c'est la tous l'avantage de la tabulation face au simple espace)

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 602
    Points : 7 837
    Points
    7 837
    Par défaut
    Citation Envoyé par unknow0 Voir le message
    suffi de régler la taille de la tabulation ^^ (c'est la tous l'avantage de la tabulation face au simple espace)
    Jusqu'au jour où tu ne sais pas pourquoi des tabulations ont été remplacées par 8 espaces dans certaines parties du programme ! J'ai eu ce gag déjà

  6. #6
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Citation Envoyé par troumad Voir le message
    Jusqu'au jour où tu ne sais pas pourquoi des tabulations ont été remplacées par 8 espaces dans certaines parties du programme ! J'ai eu ce gag déjà
    une personne avec un super editeur qui met des espace a la place des tab :s
    rete plus qu'a faire un xD

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 588
    Points : 19 474
    Points
    19 474
    Par défaut
    Jusqu'au jour où tu ne sais pas pourquoi des tabulations ont été remplacées par 8 espaces dans certaines parties du programme ! J'ai eu ce gag déjà
    mdr
    en fait, pas drôle du tout.

    ...moments de solitude

    c'est gentil de partager, on se sent moins seul

Discussions similaires

  1. Linux et gestion des processus
    Par Invité dans le forum Linux
    Réponses: 3
    Dernier message: 28/01/2013, 09h16
  2. Gestion des Processus sur Linux
    Par 3logy dans le forum Débuter
    Réponses: 4
    Dernier message: 11/11/2010, 15h45
  3. Gestion des processus sous Linux
    Par progdevlop dans le forum C
    Réponses: 18
    Dernier message: 27/06/2009, 14h45
  4. [DB400][Débutant]comprendre la gestion des processus actif
    Par horalass dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 12/12/2006, 09h26
  5. [Système] gestion des processus linux
    Par julien.63 dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2006, 23h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo