viernes, 27 de noviembre de 2015

Procesos con fork(). IV


¿Qué hace este código?

#include <stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main(){
                    int pid;
                    int i;
                    int estado;

                    pid= fork();

                    switch(pid)
                    {
                                         case-1:         perror("No se ha podido crear el proceso hijo\n");
                                                             break;
                                         case 0:           for(i=0;i<10;i++)
                                                             printf("Soy el hijo\n");
                                                             break;
                                         default:         for(i=0; i<10;i++)
                                                             printf("Soy el padre\n");
                                                             wait(estado);
                                                             printf("Mi proceso hijo ya ha terminado.\n");
                                                             break;
                    }

}

jueves, 19 de noviembre de 2015

Creación de procesos en Java I.


Escribir un programa en  Java que ejecute dos comandos, cada uno ejecutado por un hijo, con sus respectivas básculas (argumentos), y que redireccione la salida estándar del primero a la entrada del segundo. Para facilitar las cosas, los comandos y sus básculas están en el código.
ls -la | tr "d" "D"

import java.io.*;
public class JavaComando {

 public static void main(String args[]) throws IOException, InterruptedException {
 Runtime proc = Runtime.getRuntime();
 Process lsproc = null;
 InputStream in = null;
 int b;

 Process trproc = null;
 OutputStream out = null;
 
 lsproc = proc.exec("ls -la");
 in = lsproc.getInputStream();
 trproc = proc.exec("tr 'd' 'D'");
 out = trproc.getOutputStream();
 while((b = in.read()) != -1)
 out.write(b);
 lsproc.waitFor();
 in.close();
 out.close();
 in = trproc.getInputStream();
 while((b = in.read()) != -1)
 System.out.write(b);
 trproc.waitFor();
 in.close();
 }
}

domingo, 18 de octubre de 2015

Algoritmos de Planificación.

Ver el prezi, es sencillo y bien explicado, fácil de entender.

Realizar la planificación de la siguiente lista de procesos aplicando los siguientes algoritmos:

  1. MLQF: cola1 Round Robin2 para trabajos <3; cola2 RR4 para trabajos <5 y cola3 SJF
  2. MLQ: cola1 RR4; cola2 RR2 y cola3 FCFS
ProcesosLlegadaPrioridadCPU
A03-8
B125
C21+4
D51+4
E327
F63-4

lunes, 12 de octubre de 2015

Procesos con fork() III.

1. Dime que saca por pantalla y su árbol de procesos.
      #include<stdio.h>
#include<stdlib.h>

void main() {
int i, e;
pid_t childpid;
      for(i=1; i<4; i++){
                  if ( childpid = fork() <= 0){
                             break;
                  }
                  else{
                             wait(&e);
                  }
                  printf(“este es le proceso %d con padre %d\n”, getpid(), getppid());
      }

}
2. Dime que saca por pantalla y su árbol de procesos.
     #include<stdio.h>
#include<stdlib.h>

     main()
{
int i;
for(i=0; i<4;i++)
if (fork()!=0)
break;
wait(NULL);
printf("pid=%d ppid=%d\n", getpid(), getppid());
exit(0);
}

jueves, 8 de octubre de 2015

Procesos con fork() II.

Dime que saca por pantalla este programa y su árbol de procesos.

#include<stdio.h>
#include<stdlib.h>


main()
{
int i=0;
int j=0;
int e=0;
int pid;
printf("Soy el proceso= %d y mi padre es= %d\n", getpid(),getppid());
                for(i=0;i<3;i++)
                               {
                               pid=fork();
                               wait(&e);
                               if (pid==0)
                               {
                               printf("Soy el proceso %d mi padre es%d\n", getpid(), getppid());
                                               for(j=0;j<2;j++)
                                               {
                                               pid=fork();
                                               wait(&e);
                                                               if (pid==0)
                                                              {
                                                               printf("Soy el proceso= %d mi es padre %d\n",getpid(),getppid());
                                                               break;
                                                               }
                                               }
                               break;
                               }
                               }

}

martes, 6 de octubre de 2015

Procesos con fork() I.

Dime que saca por pantalla este programa y su árbol de procesos.
#include<stdio.h>
#include<stdlib.h>
main()
{
int i, e;

pid_t pid;
printf ("Proceso %d con padre %d\n", getpid(), getppid());
for (i=1; i<4;++i)
{
pid = fork();
wait(&e);
if ( pid == 0)
                {
                                              
                 if (fork()!=0)
                               {
                                               if (fork()!=0)
                                               {
                                                               printf("Proceso con  pid=%d y padre ppid=%d\n", getpid(), getppid());
                                               }
                                               else
                                                              
                                                               printf("Proceso con pid=%d y padre ppid=%d\n", getpid(), getppid());
                               }
                else
                               {
                                               printf(" Proceso con pid=%d y padre ppid=%d\n", getpid(), getppid());      
                               }
                break;
                }
}
}

miércoles, 26 de agosto de 2015

Scripst III

Mas ejemplos para programar.

Ejercicios propuestos en los últimos exámenes

  1. Realiza un script que me devuelva el número de enlaces simbólicos del directorio actual.
  2. Realiza un script que pida por teclado una palabra. El algoritmo indica si hay el mismo número de vocales y consonantes o te indica cuál tiene más.
  3. Realiza un programa que pida un número y me devuelva todos los números hasta ese número repetidos tantas veces como indique su valor. Por ejemplo: si meto el 4, me devuelve, 1223334444.
  4. Programa que dado un nombre de grupo determine si existe en el sistema, y si es así, presente su nombre, número de grupo (GID), y lista de usuarios que pertenecen a él.