0

Existe-t-il une manière indépendante de la plateforme de forcer un processus en C++? La norme fournit-elle une fonction ou une bibliothèque?Existe-t-il une manière indépendante de la plateforme de forcer un processus en C++, comme une bibliothèque standard? Comment puis-je rendre mon code portable?

Pour créer un nouveau thread, il y a std::thread, qui utilise alors, je crois, le modèle de thread sous-jacent du système d'exploitation utilisé lorsque le standard est implémenté.

Existe-t-il un tel analogue pour créer de nouveaux processus?

Sous Linux, je peux utiliser un nouveau processus en utilisant l'appel système fork(). Mais cela ne fonctionnera pas dans Windows. Donc, je suis à la recherche d'un moyen de fourcher des processus qui permettent de réutiliser le même code sur de nombreuses plateformes. Quelques réponses à des questions similaires précédentes, telles que this et this, suggèrent d'utiliser QThread, OpenThread, Boost, SFML, etc. Mais existe-t-il actuellement un moyen fourni par la norme?

Sinon, comment puis-je rendre mon code portable? À partir de maintenant, j'en ai besoin pour travailler uniquement sous Windows et Linux, mais je serais intéressé de savoir s'il y a un moyen en général aussi.

+0

Il n'y a pas de méthode indépendante de la plate-forme pour 'fork()' un processus. C'est tout. Ceci n'est couvert par aucune norme. POSIX est la norme pour Linux. Je n'arrête pas d'entendre parler de la couche de compatibilité POSIX de Windows. Vous voudrez peut-être enquêter là-dessus. –

+1

Cette question est une copie exacte des questions auxquelles vous avez été lié; Il n'existe aucune disposition pour la création de nouveaux processus dans les normes publiées, ce qui explique pourquoi toutes les réponses se réfèrent à des bibliothèques tierces. –

+0

Un intérêt particulier pourrait être [this] (http://stackoverflow.com/a/10602727/8877) réponse qui indique "... les différences pratiques entre les threads et les processus sur les systèmes modernes est mince;" vous n'avez peut-être pas besoin de plusieurs processus. –

Répondre

1

La seule chose que la norme prévoit pour créer de nouveaux processus est system. Cela vous permet de passer une chaîne qui est généralement traitée comme si vous l'aviez tapée dans un shell (mais ce n'est pas garanti). Si la mémoire sert, vous pouvez également passer un pointeur nul pour l'avoir ouvert un shell pour que vous puissiez l'utiliser (si possible).

C'est l'étendue de ce qui est possible dans la norme cependant.