#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
Ir para o código fonte deste ficheiro.
◆ fork_check()
int fork_check |
( |
pid_t |
pid | ) |
|
Verifica a criação de um novo processo
- Parâmetros
-
pid | numero do processo do pai |
- Retorna
- 0 sucesso na validação e -1 insucesso.
Definido na linha 68 do ficheiro dit.c.
◆ main()
int main |
( |
int |
argc, |
|
|
char ** |
argv |
|
) |
| |
Programa dit ou Processo A. Será a partir deste programa que serão derivados 4 processos sequenciais gerados pelo mesmo pai (Processo A).
- Parâmetros
-
argc | contabiliza o numero de argumentos, neste caso, apenas se admite 2, o próprio programa ./dit e o diretório a ser analisado |
argv | retorna um apontador para o diretorio a ser analisado |
- Retorna
- retorna uma lista do conteudo da diretoria contendo um item por linha, e adiciona no final o numero de itens da lista e imprime a lista na saída padrão (stout).
Definido na linha 161 do ficheiro dit.c.
◆ msg_erro_processo()
void msg_erro_processo |
( |
char |
ch | ) |
|
retorna mensagem erro quando ocorre erro na execução de um programa exec??
- Parâmetros
-
ch | letra que identifica o processo |
Definido na linha 92 do ficheiro dit.c.
◆ msg_processo()
void msg_processo |
( |
char |
ch | ) |
|
Imprime para a tela os dados de um processo. A denominação (A,B,...), o PID e o PPID.
- Parâmetros
-
Definido na linha 83 do ficheiro dit.c.
◆ processo_Bls()
void processo_Bls |
( |
char * |
argv[] | ) |
|
Primeiro redireciona-se o stdout para o ficheiro tmp1.txt. Depois executa-se a troca da imagem com o execl
- Parâmetros
-
argv | diretorio passado na linha de comandos. |
Definido na linha 101 do ficheiro dit.c.
◆ processo_Cecho()
Acrescenta no ficheiro tmp1.txt o texto "Itens encontrados: "
- Parâmetros
-
argv | diretorio passado na linha de comandos. |
Definido na linha 111 do ficheiro dit.c.
◆ processo_Dwc()
Redireciona o stout para o ficheiro tmp2.txt. Redireciona o stdin para o ficheiro tmp1.txt O comando wc -l lê o standard input se nenhum ficheiro for passado na linha de comandos. O seu output é redirecionado para o tmp2.txt
Definido na linha 124 do ficheiro dit.c.
◆ processo_Ecat()
Executa a concatenação dos ficheiros tmp1.txt e tmp2.txt e imprime o resultado final para o ecrã. Utiliza a função execvp que recebe como parametro o vetor arguments.
Definido na linha 140 do ficheiro dit.c.
◆ valida_args()
int valida_args |
( |
int |
argc | ) |
|
Teste ao numero de argumentos, caso este seja diferente de 2 informa o utilizador e sai do programa.(dois argumentos pois o nome do comando conta como um argumento) atenção que argc conta também o comando em si, pelo que temos de contabilizar 2 um para o comando e outro para o diretório passado
- Parâmetros
-
argc | numero de argumentos passados á função main() |
- Retorna
- 0 sucesso na validação e -1 insucesso.
Definido na linha 30 do ficheiro dit.c.
◆ valida_dir()
int valida_dir |
( |
char * |
argv[] | ) |
|
Optei pela função opendir() em vez do fopen, porque na fase de testes fopen retornava Ok para um ficheiro e apenas pretendemos dirirotios. Por isso, procurei uma função que indicasse se um dado diretorio existe ou não, mas integrado na norma UNIX e standard C, e opendir() cumpre esses critérios.
- Parâmetros
-
argv | diretorio a ser introduzido |
- Retorna
- 0 sucesso na validação e -1 insucesso.
Definido na linha 49 do ficheiro dit.c.
◆ environ
Nas funções que não têm envp como argumento, as variáveis de ambiente são as definidas na variável global environ.