Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/04/2007, à 13:05

jonbienvenue

[ RESOLU]Erreur sur les commandes du genre ps -aux | grep firefox

Bonjour,
je suis en train de faire un mini-shell, et j'ai un petit problème avec les commandes du genre ps -aux | grep firefox.

l'erreur est la suivant :

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.3/FAQ
cj402314 29924  0.0  0.1  4244 1044 ?        S    12:50   0:00 /bin/sh /usr/local/firefox-2.0/firefox file:///tmp/gaimikYztC
cj402314 29939  0.0  0.1  4244 1060 ?        S    12:50   0:00 /bin/sh /usr/local/firefox-2.0/run-mozilla.sh /usr/local/firefox-2.0/firefox-bin file:///tmp/gaimikYztC
cj402314 29944  7.3  4.3 186748 44608 ?      Sl   12:50   0:32 /usr/local/firefox-2.0/firefox-bin file:///tmp/gaimikYztC
bj304075 30038  0.0  0.0  3756  716 pts/1    R+   12:58   0:00 grep firefox
ERROR: User name does not exist.
********* simple selection *********  ********* selection by list *********
-A all processes                      -C by command name
-N negate selection                   -G by real group ID (supports names)
-a all w/ tty except session leaders  -U by real user ID (supports names)
-d all except session leaders         -g by session OR by effective group name
-e all processes                      -p by process ID
T  all processes on this terminal     -s processes in the sessions given
a  all w/ tty, including other users  -t by tty
g  OBSOLETE -- DO NOT USE             -u by effective user ID (supports names)
r  only running processes             U  processes for specified users
x  processes w/o controlling ttys     t  by tty
*********** output format **********  *********** long options ***********
-o,o user-defined  -f full            --Group --User --pid --cols --ppid
-j,j job control   s  signal          --group --user --sid --rows --info
-O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
-l,l long          u  user-oriented   --sort --tty --forest --version
-F   extra full    X  registers       --heading --no-heading --context
                    ********* misc options *********
-V,V  show version      L  list format codes  f  ASCII art forest
-m,m,-L,-T,H  threads   S  children in sum    -y change -l format
-M,Z  security data     c  true command name  -c scheduling class
-w,w  wide output       n  numeric WCHAN,UID  -H process hierarchy

je vous donne mon code

/* recherche du caractere '|'*/
    
    while((res==0) && (line[i]!='\n')){
       	if(line[i]=='|')
	    res=i;
	else
	i++;}
    
    /* si res n'a pas bouge on a pas trouve*/
    if(res==0) return 0;
/*ligne de commande droite et gauche*/
    char partie_gauche[LINE_SIZE],partie_droite[LINE_SIZE];
    
     strncpy(partie_gauche,line+1,res-1);
     strncpy(partie_droite,line+(res+2),LINE_SIZE-res);
    
    /* on la met en bonne forme*/
    char path_name_gauche[PATH_SIZE],path_name_droite[PATH_SIZE];
    char* args_vect_gauche[VECT_SIZE],*args_vect_droite[PATH_SIZE];
    int nbEntrees_gauche,nbEntrees_droite;
    nbEntrees_gauche= mk_vect_cmd(partie_gauche, path_name_gauche, PATH_SIZE, args_vect_gauche, VECT_SIZE);
    nbEntrees_droite= mk_vect_cmd(partie_droite, path_name_droite, PATH_SIZE, args_vect_droite, VECT_SIZE);
    
    printf("path_name_gauche=%s \n",path_name_gauche);
    
    for(i=0;i<nbEntrees_gauche;i++){
      printf("Argument %d : %c\n",i,args_vect_gauche[i][0]);
    }

    /* on est pret à executer la commande*/
    /* on crée un tube*/
    pipe(fd);
    
 /* on crée des processus*/
    pid_t fils,fils2;int pipe_oldfdout,pipe_oldfdin;
    pid_t pid_wait,pid_wait2;
    int status,status2;
    
    if((fils=fork())<0)ERRNO_EXIT;
    if(fils==0){
	/* on est dans le fils*/
	close(fd[0]);
	pipe_oldfdout=dup2(fd[1],1);
	execvp(path_name_gauche, args_vect_gauche);
	
    }
    else{
	/*on est dans le père*/
	/* je cree un autre fils*/
	if((fils2=fork())<0) ERRNO_EXIT;
	if(fils2==0){
	    close(fd[1]);
	    pipe_oldfdin=dup2(fd[0],0);
	    execvp(path_name_droite, args_vect_droite);}
	else {
	    /* on ferme le tube*/
	    close(fd[1]);
	    close(fd[0]);
	    /* on attend que ca se termine*/	    
	    if((pid_wait=wait(&status))<0) ERRNO_EXIT;
	    if((pid_wait2=wait(&status2))<0) ERRNO_EXIT;
	   
	    
	    
	}
    }
    
    
    
}

explication :
Line etant la ligne lu au clavier
la fonction  int mk_vect_cmd (char line[], char path[], int pathSize, char* vect[], int vectSize) prend line et la met de la forme 
   *  entrée: line="/bin/ls    -ls   > f1  \n"
   *  sortie: line="/bin/ls\0    -ls\0   >\0 f1\0"
   *          path="/bin/ls"
   *          vect[0]="ls"
   *          vect[1]="-ls"
   *          vect[2]=">"
   *          vect[3]="f1"
   *          vect[4]=NULL
   *  valeur retournée=4

Merci de m'aider à résoudre mon problème.
@tte

Dernière modification par jonbienvenue (Le 07/04/2007, à 21:47)

Hors ligne

#2 Le 05/04/2007, à 13:28

all

Re : [ RESOLU]Erreur sur les commandes du genre ps -aux | grep firefox

peut-etre parce qu'il faut utiliser

ps aux

et non

ps -aux

Hors ligne

#3 Le 05/04/2007, à 13:32

jonbienvenue

Re : [ RESOLU]Erreur sur les commandes du genre ps -aux | grep firefox

salut all
que ce soit avec ps -aux ou ps aux ca ne marche pas.
mais quand je tape

ps aux  | wc -l

l'erreur est : ERROR: Garbage option.
Merci de ton aide.

Hors ligne

#4 Le 06/04/2007, à 17:55

jonbienvenue

Re : [ RESOLU]Erreur sur les commandes du genre ps -aux | grep firefox

ca y'est j'ai trouve la solution en fait j'avais un probleme dans le code retour de la fonction.
Dans le main ou j'avais teste ma fonction executer 2 fois la ligne de commande dont une fois de la mauvaise maniere.

Merci quand meme

Hors ligne