#1 Le 05/04/2007, à 12: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, à 20:47)
Hors ligne
#2 Le 05/04/2007, à 12: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, à 12: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, à 16: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