[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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bom dia,
duduzinho12000 <=