# Programación multiproceso:
 -	Ejecutables. Procesos. Servicios.
 -	Estados de un proceso.
 -	Hilos.
 -	Programación concurrente.
 -	Programación paralela y distribuida.
 -	Comunicación entre procesos.
 -	Gestión de procesos.
 -	Sincronización entre procesos.
 -	Programación de aplicaciones multiproceso.

# Conceptos:
 - Multiproceso
 - BCP
 - Process status
 - Estados de un proceso
 - System
 - Funciones
 - Función main
 - Creación y ejecución de procesos
 - Padre crear hijo
 - Comunicación entre procesos
 - Pipes
   - Sin nombre
     - https://www.jesusninoc.com/2018/08/03/c-programming-in-linux-tutorial-037-pipe-function/
   - Con nombre
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/Fifo.c
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/fifocrea.c
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/fifoescribe.c
 - Sincronizar procesos
 - Señales
 - Creación procesos Java
 - Programación concurrente
 - Condiciones de Bernstein
 - Programación paralela
 - Memorias compartidas
 - Semáforos
 - Programación distribuida
 
------------------
 
# Primer programa en C

## Primer programa en C
https://www.jesusninoc.com/2014/09/27/primer-programa-en-c/

## Compiling a C Program on the Windows Command Line
https://www.jesusninoc.com/2015/09/01/compiling-a-c-program-on-the-windows-command-line/

## Compilar un programa en C mediante GCC (GNU Compiler Collection) desde PowerShell
https://www.jesusninoc.com/2018/06/23/compilar-un-programa-en-c-mediante-gcc-gnu-compiler-collection-desde-powershell/

## Compiling a C Program on the Bash in PowerShell
https://www.jesusninoc.com/2018/07/03/compiling-a-c-program-on-the-bash-in-powershell/

# Procesos en Linux

## Programación de procesos en Linux
https://www.jesusninoc.com/2015/01/02/programacion-de-procesos/

## Crear un proceso hijo mediante la función fork de Linux (en Bash y en PowerShell mediante WSL)
https://www.jesusninoc.com/2018/07/04/crear-un-proceso-hijo-mediante-la-funcion-fork-de-linux-en-bash-y-en-powershell-mediante-wsl/

## Crear un hijo
https://github.com/mememiguelo/PSP/blob/master/C/Otros/PadreHijo.c

----------
----------

# Programación multiproceso:
 -	Ejecutables. Procesos. Servicios.
 -	Estados de un proceso.
 -	Hilos.
 -	Programación concurrente.
 -	Programación paralela y distribuida.
 -	Comunicación entre procesos.
 -	Gestión de procesos.
 -	Sincronización entre procesos.
 -	Programación de aplicaciones multiproceso.

# Conceptos:
 - Comunicación entre procesos
 - Pipes
   - Sin nombre
     - https://www.jesusninoc.com/2018/08/03/c-programming-in-linux-tutorial-037-pipe-function/
     - https://www.geeksforgeeks.org/pipe-system-call/
   - Con nombre
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/Fifo.c
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/fifocrea.c
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/fifoescribe.c
 - Sincronizar procesos
 - Señales
 - Creación procesos Java
 - Programación concurrente
 - Condiciones de Bernstein
 - Programación paralela
 - Memorias compartidas
 - Semáforos
 - Programación distribuida

---------------------

# Procesos en Linux

## Programación de procesos en Linux
https://www.jesusninoc.com/2015/01/02/programacion-de-procesos/

## Crear un proceso hijo mediante la función fork de Linux (en Bash y en PowerShell mediante WSL)
https://www.jesusninoc.com/2018/07/04/crear-un-proceso-hijo-mediante-la-funcion-fork-de-linux-en-bash-y-en-powershell-mediante-wsl/

## Crear un hijo
https://github.com/mememiguelo/PSP/blob/master/C/Otros/PadreHijo.c

## Crear un proceso en el que el padre resta un valor y el hijo suma un valor
https://www.jesusninoc.com/10/01/crear-un-proceso-en-el-que-el-padre-resta-un-valor-y-el-hijo-suma-un-valor/

## Crear dos hijos
https://github.com/mememiguelo/PSP/blob/master/C/Otros/Padrehijo2.c

## Crear un hijo y un hijo del hijo
https://github.com/mememiguelo/PSP/blob/master/C/Otros/Padrehijonieto.c

---------------------

# Llamadas al sistema
## Llamadas al sistema en UNIX
https://github.com/jesusninoc/ClasesPSP/blob/master/2017-10-25.md
## ptrace - rastreo de un proceso
* http://manpages.ubuntu.com/manpages/trusty/es/man2/ptrace.2.html
* https://www.linuxjournal.com/article/6100
## Linux Commands For Shared Library Management & Debugging Problem
https://www.cyberciti.biz/tips/linux-shared-library-management.html
## wait, waitpid, waitid - wait for process to change state
http://man7.org/linux/man-pages/man2/waitpid.2.html

---------------------

# Programación multiproceso:
 -	Ejecutables. Procesos. Servicios.
 -	Estados de un proceso.
 -	Hilos.
 -	Programación concurrente.
 -	Programación paralela y distribuida.
 -	Comunicación entre procesos.
 -	Gestión de procesos.
 -	Sincronización entre procesos.
 -	Programación de aplicaciones multiproceso.

# Conceptos:
 - Pipes
   - Sin nombre
     - https://www.jesusninoc.com/2018/08/03/c-programming-in-linux-tutorial-037-pipe-function/
   - Con nombre
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/Fifo.c
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/fifocrea.c
     - https://github.com/mememiguelo/PSP/blob/master/C/Otros/fifoescribe.c
 - Sincronizar procesos
 - Señales
 - Creación procesos Java
 - Programación concurrente
 - Condiciones de Bernstein
 - Programación paralela
 - Memorias compartidas
 - Semáforos
 - Programación distribuida
 
---------------------

# Descriptores
|Valor|entero|Nombre
|---|---|---
|0|Entrada estándar|stdin
|1|Salida estándar|stdout
|2|Error estándar|stderr

# Pipes
## Sin nombre
### Cuando el flujo de información va del hijo hacia el padre:
- El padre debe cerrar el descriptor de escritura fd[1].
- El hijo debe cerrar el descriptor de lectura fd[0].
### El proceso hijo envía al proceso padre mediante el uso de pipes el mensaje "Hola papito"
* https://www.jesusninoc.com/02/27/crear-y-utilizar-una-tuberia-sin-nombre-en-linux/

----------
----------

# Procesos en Java

## Crear un proceso en Java mirando el API
https://www.jesusninoc.com/2012/08/25/crear-un-proceso-utilizando-processbuilder/

## Java con ejemplos
https://www.jesusninoc.com/2017/12/01/curso-de-java-con-ejemplos/

## Crear un proceso utilizando ProcessBuilder
https://www.jesusninoc.com/2012/08/25/crear-un-proceso-utilizando-processbuilder/

## Crear un proceso utilizando Runtime
https://www.jesusninoc.com/08/26/crear-un-proceso-utilizando-runtime/
