Je travaille sur un script cgi encodeur audio qui utilise libmp3lame. J'écris dans un mélange de C/C++.Exécution d'un script CGI C++ en tant que processus d'arrière-plan?
Je prévois d'avoir un CGI de point d'entrée qui peut générer plusieurs processus de codage qui s'exécutent en arrière-plan. J'ai besoin que les processus d'encodage soient asynchrones car l'encodage peut prendre plusieurs heures mais j'ai besoin que le cgi du point d'entrée revienne instantanément pour que le navigateur puisse continuer à travailler.
J'ai trouvé plusieurs solutions pour cela (certaines sont complètes/d'autres non) mais il y a encore quelques choses que j'aimerais clarifier.
Solution 1 (le plus facile): Le cgi entrée de point est un script bash qui peut alors exécuter un C++ processus cgi en arrière-plan en envoyant la sortie vers/dev/null/2/&> 1 & (simples mais pas très élégant).
Solution 2: Tout comme solution 1, à l'exception du cgi point d'entrée est en C++ et utilise le système() pour exécuter le proc/s et envoyer la sortie vers/dev/null/2/&> 1 & nouveau.
[question] Cela fonctionne bien mais je ne suis pas sûr si les sociétés d'hébergement mutualisées permettent l'utilisation de la fonction system(). Est-ce le cas?
Solution 3 (incomplète): J'ai examiné en utilisant fork()/pthread_create() pour engendrer des threads séparés qui semble plus élégant que je peux rester dans les domaines de C. Le seul problème étant: Il semble que le le thread parent ne quitte pas tant que tous les threads enfants ne sont pas retournés.
[question] Existe-t-il un moyen de sortir le thread parent tout en permettant aux threads fils de continuer en arrière-plan. [Idée] Peut-être que je peux envoyer la sortie enfant proc/s au trou noir! Puis-je simplement rediriger stdout vers/dev/null. Si oui, comment je fais ça?
J'espère que cela a du sens pour quelqu'un. Je suis encore un peu un noob avec des trucs en C, donc il me manque des concepts très basiques (merci d'avoir pitié!).
Je serais très reconnaissant de tout conseil à ce sujet.
Un grand merci à l'avance,
Josh
lire ce lien: http://apidock.com/ruby/Process/detach/class – whunmr