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();
 }
}