Java: ¿una bifurcación tipo C?

3 minutos de lectura

avatar de usuario
sakana

¿Es posible hacer una bifurcación “C like” en Java, usando un nuevo proceso jvm independiente?

¿Cómo?

  • ¿Tal vez podría entrar en más detalles sobre lo que está tratando de lograr? Como se mencionó, puede ejecutar () otro proceso, que podría ser otra instancia de la JVM, pero eso no le brinda el mismo estado compartido que fork () en C. Por otro lado, puede ejecutar subprocesos, pero allí se comparte más de lo que lo haría con fork().

    –Mark Bessey

    13 de noviembre de 2008 a las 17:56

  • Simplemente quiero evitar el intercambio que implica el hilo. Gracias por tu preocupación 🙂

    – sakana

    14 de noviembre de 2008 a las 13:42

avatar de usuario
usuario525362

Esta respuesta es probablemente un poco tarde, pero:

http://akuma.kohsuke.org/

parece ser exactamente lo que buscas

  • parece que realmente no se bifurca, pero los nuevos procesos secundarios de exec brindan algunos beneficios como fork.

    – rogerdpack

    23 de diciembre de 2011 a las 0:07

  • Tenga en cuenta que solo funciona en un sistema similar a POSIX (más o menos todo menos Windows)

    – Carlos B

    18 de enero de 2012 a las 15:41

  • Puede leer el código fuente de Akuma y usar la API posix usando JNA como lo hace Akuma.

    – Arnaud

    15 de febrero de 2017 a las 14:54

  • Si bien esto puede responder teóricamente a la pregunta, sería preferible incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia.

    – Ferrygrande

    2 de julio de 2017 a las 10:03

avatar de usuario
Filho

Curiosamente, solo estoy trabajando en esto: un proceso de Java que ejecuta otros procesos de Java. usé el artículo De Runtime.exec() a ProcessBuilder como base sólida y Cuando Runtime.exec() no como un buen consejo sobre cómo engullir los flujos de salida.

PD: Para aquellos que se preguntan, tuve que hacer eso (en lugar de generar nuevos subprocesos) porque otro proceso de Java está verificando la presencia de estos procesos que, normalmente, se ejecutan por separado con comandos de shell.

  • Esos solo se refieren a Runtime.exec()que es MUY diferente de poder controlar explícitamente al niño después de un fork().

    –Volker Stolz

    9 de octubre de 2012 a las 7:51

  • ¿Puede actualizar la respuesta y corregir el enlace para ProcessBuilder?

    – Jatin Kumar

    18 de junio de 2015 a las 6:18

  • el enlace esta caido 🙁

    – Raúl Sharma

    10 mayo 2018 a las 10:13

  • Esta es una respuesta antigua, pero si aún desea obtener la información, use Wayback Machine para acceder a estos artículos antiguos. ¿O buscar otros más nuevos?

    – Filho

    11 de mayo de 2018 a las 10:23

los API de aislamiento de aplicaciones (JSR 121) presenta Isolate que aborda este caso de uso.

  • Por lo que puedo ver, la API de aislamiento no es compatible con el JDK actual (1.8). Hay un proyecto experimental de MVM (Máquina virtual multitarea) que lo hace, pero no encontró su camino en la línea principal. Además, me parece que la API de aislamiento no permite hacer una bifurcación, donde el estado del proceso de bifurcación se clona en el niño: por lo que pude entender, el aislamiento comienza con un método principal y (por supuesto ) diferentes aislamientos no comparten estado.

    – Pietro Braione

    15/10/2014 a las 12:23

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad