Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1056 connectés 

  FORUM HardWare.fr
  Programmation

  [c] Prog système sous LINUX !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c] Prog système sous LINUX !

n°143318
the_white_​rabbit
Follow the white rabbit !
Posté le 23-05-2002 à 15:30:35  profilanswer
 

Salut les gens ! ! !
 
  Pouvez-vous m'expliquer en gros ce que fait ce petit prog en C...  
 
  Merci !  
 
 
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>
 
#define BUFFSIZE 1024
#define MAXPARAMS 8
 
char *argv[MAXPARAMS];
 
int isquit(char *buf);
void tokenize(int nread, char *buf, char *argv[]);
 
int main(void)
{
        int i, nread;
        char *prompt = "what> ";
        char buf[BUFFSIZE];
 
        while(1)
        {       i = 0;
                nread = 0;
                write(STDOUT_FILENO, prompt, strlen(prompt));
                nread = read(STDIN_FILENO, buf, BUFFSIZE);
                if (isquit(buf)) break;
                tokenize(nread, buf, argv);
 
                if(fork()==0)
                {
                       execvp(argv[0], argv);
                       exit(0);
                }
                wait((int *)0);
        }
}
 
 
int isquit(char *buf)
{
     if (buf[0]=='q'&&buf[1]=='u'&
&buf[2]=='i'&&buf[3]=='t';)
 
        return 1;
     else
        return 0;
}
 
/*break the input into an array of strings for exec*/
void tokenize(int nread, char *buf, char *argv[MAXPARAMS])
{
 
     int i, j, k, len;
 
     i = 0;
     k = 0;
     while (i < nread)
     {
          j = 0;
          while(isspace(buf[i])) i++;           /*remove leading white  
        space*/
          if (i >= nread) break;                /*disregard trailing  
        spaces*/
          while(!isspace(buf[len])) len++;      /*get length of token*/
          argv[k]= (char *)sbrk(len + 1);       /*allocate memory*/
          memset(argv[k],(char)0,len + 1);      /*clear new space*/
          while (!isspace(buf[i]))         /*take the next argument
          from input stream*/
          {
                argv[k][j] = buf[i];        /*copy token from input*/
                i++;j++;
          }
          argv[k][i] = '\0';                    /*make token a null  
        terminated string*/
          k++;
      }
     argv[k] = NULL;
}

mood
Publicité
Posté le 23-05-2002 à 15:30:35  profilanswer
 

n°143324
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-05-2002 à 15:34:42  profilanswer
 

C'est un shell simplifié on dirait


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°143330
erwan_oops
Posté le 23-05-2002 à 15:38:56  profilanswer
 

je suis du même avis
 
il demande a l'utilisateur what> comme prompt il scan  
il transforme se qu'il a scané et rexecute une fois trnasformé


---------------
la théorie c quant tout dois fonctionner mais rien ne marche                                 la pratique c quant tout marche mais personne ne c pourquoi                           ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D
n°143350
the_white_​rabbit
Follow the white rabbit !
Posté le 23-05-2002 à 15:49:51  profilanswer
 

a quoi sert exactement la commande fork dans ce prog ?

n°143362
erwan_oops
Posté le 23-05-2002 à 16:03:25  profilanswer
 

a crée un "double" de l'applic donc tu as un pere et un fils l'un qui retourne au prompt et l'autre qui execute la commande demandée


---------------
la théorie c quant tout dois fonctionner mais rien ne marche                                 la pratique c quant tout marche mais personne ne c pourquoi                           ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [c] Prog système sous LINUX !

 

Sujets relatifs
[API] kkun sait fermer une appli à partir d'un prog ?...visual basic : comment mieux gérer les dates dans mon prog ???
[LINUX] problème sur un driver !linux, interruption et c : help !!
[C++] ajout user sous Linux et envoie mail (Edit)[ prog systeme Unix inside !] help !! mémoire partagée, je galère !
[C] ouvrir un fichier en données pour un prog...[vb6]mettre une musique dans mon prog !
[delphi] Les uses en delphi ? est ce que le prog pese plus ? 
Plus de sujets relatifs à : [c] Prog système sous LINUX !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR