publicidad para paginas mejor google extension chrome bloquear bloqueador bloquea anuncios c linux operating-system

c - para - Versión sin bloqueo del sistema()



extension para bloquear paginas en chrome (5)

Deseo iniciar un proceso desde mi programa c, pero no quiero esperar a que termine ese programa. Puedo iniciar ese proceso OK usando el sistema () pero eso siempre espera. ¿Alguien sabe de una versión ''no bloqueante'' que volverá tan pronto como se haya iniciado el proceso?

[Editar - Requisito adicional] Cuando el proceso original ha terminado de ejecutarse, el proceso secundario debe seguir ejecutándose.


¿Por qué no utilizar fork() y exec() , y simplemente no llamar a waitpid() ?

Por ejemplo, podrías hacer lo siguiente:

// ... your app code goes here ... pid = fork(); if( pid < 0 ) // error out here! if( !pid && execvp( /* process name, args, etc. */ ) // error in the child proc here! // ...parent execution continues here...


Al final, este código parece funcionar. Un poco de confusión de las respuestas anteriores:

pid = fork(); if (!pid) { system("command here &"); } exit(0);

No estoy seguro de por qué funciona, pero hace lo que busco, gracias a todos por su ayuda


La forma normal de hacerlo, y de hecho no deberías usar el sistema (), es popen .
Esto también le permite leer o escribir desde el stdin / out del proceso engendrado

editar: vea popen2 () si necesita leer y escribir - thansk quinmars


Puede usar la función posix_spawnp (). Es muy similar al sistema () que la combinación fork y exec *, pero no bloquea.


Una opción es en su llamada al sistema, haga esto:

system("ls -l &");

el & al final de los argumentos de la línea de comandos bifurca la tarea que ha iniciado.