Repository navigation
Expand file tree
/
Copy pathshell.c
More file actions
53 lines (43 loc) · 1.34 KB
/
Copy pathshell.c
File metadata and controls
53 lines (43 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/***ARCHIVO MAIN
*
* Nombre de Archivo: funcShell.h
* integrantes:
* -Daniel Alejandro Diaz Ocampo 1629338-3743
* -Jem Pool Suarez Muñoz - 1630536-3743
*
**/
//Librerias usadas
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
#include "funShell.h"
int main(int argc, char*argv[]) {
while (1) {
char comando[80];//variable que almacena la linea completa
printf("$ ");
scanf(" %[^\n]s", comando);
if (!strcmp("exit", comando)) {
break;
}
pid_t pid = fork();//creacion de proceso hijo
int salidaTexto = 0,doPipe = 0;//variables "booleanas"
FILE * fd; // archivo de salida
if (!pid) {
//arreglos para comando y pipe
char * myargs[100], * pipeArray[100];
asignarArgumentos(myargs, comando, &salidaTexto, &doPipe, pipeArray);
if (salidaTexto){
if(prepararSalidaArchivo(salidaTexto,&fd,myargs))break;
}
if (doPipe) { // Ejecucion con pipe //
ejecutarPipe(myargs,pipeArray);
} else { // Ejecucion sin pipe //
ejecutarSinPipe(myargs);
}
cerrarArchivo(&fd,salidaTexto);
break;//Muere el proceso hijo //
} else {
waitpid(pid, NULL, 0);//espera a que el proceso hijo muera
}
}
}