diff --git a/C/args.c b/C/args.c new file mode 100644 index 0000000..306e1d6 --- /dev/null +++ b/C/args.c @@ -0,0 +1,12 @@ +#include +#include + +int main(int argc ,char *argv[]){ + + + for (int i = 0; i < argc; i++) { + printf("%d, %s \n",i,argv[i]); + + } + return 0; +} \ No newline at end of file diff --git a/C/fork.c b/C/fork.c new file mode 100644 index 0000000..a2bafdd --- /dev/null +++ b/C/fork.c @@ -0,0 +1,27 @@ +#include +#include +#include + +int main(void) { + pid_t id_actual, id_padre, pid; + + pid = fork(); + + if (pid == -1) { // Hubo error + printf("Hubo un problema de impotencia al crear el hijo"); + exit(-1); } + // Si todo va bien y se crea el hijo tenemos que hacer + // que el programa ejecute un código con distinto para cada + // proceso + if (pid == 0) { // Nos encontramos en el hijo + printf ("Soy el proceso hijo\n\t"); + printf(" Mi PID es %d, y el mi papa %d\n",getpid(),getppid()); + } else { // Nos encontramos en el padre + printf("Yo soy el padre de la criatura:\n\t"); + printf("Mi PID es %d, el de mi padre (abuelo de la criatura) es %d.\n\t", + getpid(),getppid()); + printf("Mi hijo si es de verdad hijo mio deberia tener el PID %d.\n",pid); + wait(NULL); // Espera a que termine el hijo + } + return 0; +} \ No newline at end of file diff --git a/C/fork2.c b/C/fork2.c new file mode 100644 index 0000000..2220a28 --- /dev/null +++ b/C/fork2.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include + +int main(void) { + pid_t id_actual, id_padre, pid; + + pid = fork(); + + if (pid == -1) { // Hubo error + printf("Hubo un problema de impotencia al crear el hijo"); + exit(-1); } + // Si todo va bien y se crea el hijo tenemos que hacer + // que el programa ejecute un código con distinto para cada + // proceso + if (pid == 0) { // Nos encontramos en el hijo + printf ("Soy el proceso hijo\n\t"); + printf(" Mi PID es %d, y el mi papa %d\n",getpid(),getppid()); + } else { // Nos encontramos en el padre + id_actual = wait(NULL); + printf("Yo soy el padre de la criatura:\n\t"); + printf("Mi PID es %d, el de mi padre (abuelo de la criatura) es %d.\n\t", + getpid(),getppid()); + printf("Mi hijo si es de verdad hijo mio deberia tener el PID %d.\n",pid); + } + return 0; +} \ No newline at end of file diff --git a/C/fork3.c b/C/fork3.c new file mode 100644 index 0000000..c2c95a0 --- /dev/null +++ b/C/fork3.c @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include + +int main(void) { + pid_t pid, Hijo_pid, pid2, Hijo2_pid, id_actual; + + pid = fork(); // Soy el abuelo e intento crear a mi hijo + + if (pid == -1) { // Hubo error + printf("Hubo un problema de impotencia al crear el hijo\n"); + exit(-1); + } + + if (pid == 0) { + // Nos encontramos en el hijo + pid2 = fork(); // soy el hijo y creo al nieto + + switch(pid2) { + case -1: // error + printf("No se ha podido crear el proceso nieto en el hijo\n"); + exit(-1); + break; + case 0: // Estoy en el nieto + printf("\t\tSoy el proceso NIETO %d, Mi padre es = %d\n", + getpid(), getppid()); + break; + default: // proceso padre (hijo) + Hijo2_pid = wait(NULL); // espero a que termine nieto, que es mi hijo + printf("\t\tSoy el proceso HIJO %d, Mi padre es = %d\n", + getpid(), getppid()); + printf("\tMi hijo: %d terminó.\n", Hijo2_pid); + } + + } else { + // Nos encontramos en el abuelo + id_actual = wait(NULL); // Espero a que termine mi hijo, que a su vez espera que termine el nieto + printf("Yo soy el abuelo de las dos criaturas anteriores:\n\t"); + printf("Mi PID es %d, el de mi padre (Sistema Operativo) es %d.\n\t", getpid(), getppid()); + printf("Mi hijo si es de verdad hijo mio deberia tener el PID %d.\n", pid); + printf("A mi nieto no lo puedo conocer, solo reconozco a mi generación inmediata\n"); + printf("Para conocer a mi NIETO debería implementar algún sistema de comunicación entre procesos.\n"); + } + return 0; +} \ No newline at end of file diff --git a/C/pid.c b/C/pid.c new file mode 100644 index 0000000..69f38c6 --- /dev/null +++ b/C/pid.c @@ -0,0 +1,13 @@ +#include +#include + +int main(void) { + pid_t id_actual, id_padre; + id_actual = getpid(); + id_padre = getppid(); + + printf("Mi PID es: %d\n", id_actual); + printf("El PID de mi papa es: %d\n", id_padre); + + return 0; +} \ No newline at end of file diff --git a/C/proceso1.c b/C/proceso1.c new file mode 100644 index 0000000..506cac2 --- /dev/null +++ b/C/proceso1.c @@ -0,0 +1,14 @@ +#include +#include +int main() { + printf("Ejemplo de uso de system():"); + printf("\n\tListado del directorio actual y envio a un fichero:"); + printf("%d",system("ls > ficherosalida.txt")); + printf("\n\tAbrimos con nano el fichero ..."); + printf("%d",system("nano ficherosalida.txt")); + printf("\n\tEste comando es erroneo: %d",system("msword")); + printf("\nFin del programa"); + + return 0; + +} \ No newline at end of file diff --git a/C/proceso2.c b/C/proceso2.c new file mode 100644 index 0000000..5167051 --- /dev/null +++ b/C/proceso2.c @@ -0,0 +1,9 @@ +#include +#include +int main() { + printf("Ejemplo de uso de excel():"); + printf("\n\tListado del directorio actual:"); + execl("/bin/ls","ls","-l", (char *)NULL); + printf("\nEsta instrucción no se llega a ejecutar"); + return 0; +} \ No newline at end of file diff --git a/C/variables b/C/variables new file mode 100755 index 0000000..f0cee13 Binary files /dev/null and b/C/variables differ diff --git a/C/variables.c b/C/variables.c index e69de29..e3bdab8 100644 --- a/C/variables.c +++ b/C/variables.c @@ -0,0 +1,29 @@ + +#include +#include +#include +#include +#include +#include + +int main() { + int var = 6; // Variable entera inicializada a 6 + pid_t pid = fork(); // Crear un nuevo proceso + + if (pid < 0) { + // Error al crear el proceso + perror("Fork failed"); + exit(1); + } else if (pid == 0) { + // Proceso hijo + var -= 5; // Restar 5 a la variable + printf("Proceso hijo: var = %d\n", var); + } else { + // Proceso padre + wait(NULL); // Esperar a que el hijo termine + var += 5; // Incrementar la variable en 5 + printf("Proceso padre: var = %d\n", var); + } + + return 0; +} \ No newline at end of file diff --git a/C/zombies.c b/C/zombies.c index e69de29..40324fd 100644 --- a/C/zombies.c +++ b/C/zombies.c @@ -0,0 +1,18 @@ +#include +#include +#include +#include + +int main(void){ + pid_t pid= fork(); + + if (pid<0){ + perror("fork"); + return 1; + } + + + + + +} \ No newline at end of file