Reemplace el sistema () con la función de no locking

No quiero usar system () en mi progtwig C, porque el sistema (3) bloquea y esto no es lo que quiero. ¿Cuál es la forma óptima de hacerlo?

Creo que una acción rápida y sucia es llamar a sytem (command &). El & generará el nuevo proceso.

Use fork() para crear un nuevo proceso y luego use system() (o cualquier función exec ) en él. El proceso original podrá continuar ejecutándose.

La respuesta depende de cuál es tu verdadero objective. No dices en qué plataforma estás, y sé muy poco acerca de Windows, así que esto solo cubre tus opciones en linux / unix.

  1. Solo desea generar otro progtwig y no necesita interactuar con él. En este caso, llame a fork() y luego, en el proceso hijo, ejecute execve() (o función relacionada).

  2. Quieres interactuar con otro progtwig. En este caso, utilice popen() .

  3. Desea que parte de su progtwig se ejecute como un subproceso. En este caso, use fork() y llame a las funciones que necesite para ejecutar en el niño.

  4. Necesita interactuar con parte de su progtwig que se ejecuta como un subproceso. Llame a pipe() para que tenga un descriptor de archivo para comunicarse, luego llame a fork() y use el par de descriptores de archivo para comunicarse. Alternativamente, puede comunicarse a través de un socket, una cola de mensajes, una memoria compartida, etc.

Es posible que desee utilizar popen . Crea nuevos procesos y le permite redirigir la salida del proceso a su propio proceso.

Si está en Windows, use la función ShellExecute() de la API de Windows.

Si está en Unix, vaya a fork() luego system() como se mencionó.