# 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.

# Conexión SSH
* https://www.jesusninoc.com/09/24/ssh-desde-powershell/

# Ejercicio: llamar desde Java a un proceso en Linux con un script en Bash

# Pasar parametros en scripts (PowerShell y Bash)
## PowerShell
* https://www.jesusninoc.com/02/17/pasar-parametros-en-scripts-de-powershell/

## Bash
* https://www.jesusninoc.com/02/17/pasar-parametros-en-scripts-de-bash/

# Conceptos:
* https://www.jesusninoc.com/12/14/programacion-multiproceso-programacion-de-servicios-y-procesos/

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

# 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.

# Kotlin

## Función main en Kotlin

```Kotlin
/**
 * Line 13 demonstrates string templates and array access.
 * See this pages for details:
 * http://kotlinlang.org/docs/reference/basic-types.html#strings
 * http://kotlinlang.org/docs/reference/basic-types.html#arrays
 */

fun main(args: Array<String>) {
    if (args.size == 0) {
        println("Please provide a name as a command-line argument")
        return
    }
    println("Hello, ${args[0]}!")
}
```

## Creating Collections In Kotlin
https://try.kotlinlang.org/#/Kotlin%20in%20Action/Chapter%203/3.1/3.1_2_CreatingCollectionsInKotlin1.kt
```Kotlin
fun main(args: Array<String>) {
    val strings = listOf("first", "second", "fourteenth")
    println(strings.last())
    val numbers = setOf(1, 14, 2)
    println(numbers.max())
}
```

## Get location android Kotlin
https://stackoverflow.com/questions/45958226/get-location-android-kotlin

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

## Repaso de conceptos para manejar las shells (instalar Ubuntu Server)
   - SSH, conexión de red que permita acceder
   - Instalar compilador GCC
   - Compilar y ejecutar
   - Path y Classpath https://docs.oracle.com/javase/tutorial/essential/environment/paths.html
   - PowerShell
   - Rutas
   - Pipe
   - Ejecutar dos comandos
   - Almacenar la ejecución de un comando

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

# 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
 
 ---------------
 
# Repaso

## Lanzar programa que ejecute ping
* https://www.jesusninoc.com/02/17/ejercicios-de-java-lanzar-programa-que-ejecute-ping/

## Lanzar programa que ejecute un ping dos veces
* https://www.jesusninoc.com/02/17/ejercicios-de-java-lanzar-programa-que-ejecute-un-ping-dos-veces/

### Ejecutar y compilar en Java
-cp <ruta de acceso de búsqueda de clases de los directorios y los archivos zip/jar>

-classpath <ruta de acceso de búsqueda de clases de los directorios y los archivos zip/jar>
```CMD
javac proceso2.java
java -cp . proceso2
```

## Crear, compilar y ejecutar una clase de Java que ejecuta un cmdlet de PowerShell utilizando Runtime
https://www.jesusninoc.com/02/08/crear-compilar-y-ejecutar-una-clase-de-java-que-ejecuta-un-cmdlet-de-powershell-utilizando-runtime/

## Crear, compilar, generar y ejecutar un JAR de Java que ejecuta un cmdlet de PowerShell utilizando Runtime
https://www.jesusninoc.com/02/09/crear-compilar-generar-y-ejecutar-un-jar-de-java-que-ejecuta-un-cmdlet-de-powershell-utilizando-runtime/

# 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/
