shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bom dia


From: duduzinho12000
Subject: bom dia
Date: Tue, 26 Apr 2005 04:12:49 -0000
User-agent: eGroups-EW/0.82

Alguem saberia fazer esse programa 


Será executado os comandos digitados pelo usuário em um processo 
filho criado através de uma função da família das execs (man 3 exec) 
que deve executar todos os comandos de um Shell exceto o  exit e o 
cd e o cp (que deve ser programado dentro do código do Meu Shell, 
podem se inspirar no copia.c).

O Shell deve finalizar ao receber o comando:

                                                                     
            Acabou 

Obs: Deve ignorar o comando exit 


Atenção: A mudança de diretório deve ser feita pelo processo pai e 
não pelo processo filho.

Dica: utilize um vetor de argumentos. Ex:     char     * arg [5001]; 

pid_t               fork     (       void     );  à criação de 
processo filho

 <!--[endif]--> 

pid_t               wait     ( int *status );  à aguarda um processo 
filho morrer

 <!--[endif]--> 

int                    execvp (const char * path, char * const argv
[ ] ) à muda o processo corrente

 <!--[endif]--> 

int                    chdir   ( char * path); à altera o diretório 
corrente

 <!--[endif]--> 

 <!--[endif]--> 

#include<stdio.h> 

/*
 *      Le uma linha do teclado incluindo os espacos ate o limite 
 *      de (tam_max -1) caracteres, pois destina uma posicao para 
o '\0'
 */
void le_linha(char *linha, int tam_max)
{
        char * anda = linha, 
               *para = linha + tam_max - 1; /* reserva lacuna para 
o '\0' */
        
        for (
                (*anda)=getc(stdin)                 ; /* le o 1o. 
Char  da linha             */
                ( (*anda)!='\n' ) && ( anda < para ); /* testa o 
enter e se possui pos. livre*/  
                   anda++ ,    (*anda)=getc(stdin)    /* faz ao 
final do teste -> avanca na 
                                                         string p/ a 
pos. seguinte lendo-a   */
            )
                                    ; /* F O R    V A Z I O   ->  
precisa do ponto e virgula */     

        (*anda)='\0';  /* coloca o '\0' na pos. final -> seja 
substituindo o '\n' ou na lacuna
                          reservada ao final do loop (for) */
}


/*
 *      Exemplo de chamada a le_linha
 */
int main (void)
{
          char teste[30];

          printf("Vou pedir a le_linha para ler: ");

          le_linha(teste,30);
                
          printf("\nle_linha retornou: %s\n\n\n",teste);

          return(0);
}





















reply via email to

[Prev in Thread] Current Thread [Next in Thread]