2015-11-20 1 views
1

Je lisais this article sur la communication entre processus avec passage de message. Afin de lancer les exemples et de voir ce qu'il dit et je cite: "devrait être compilé et exécuté en même temps". Quelqu'un a des idées comment exactement dois-je faire cela?Exécuter deux programmes en même temps C/C++

+4

1. Compilez et exécutez un. 2. Sans arrêter le premier, compiler et exécuter l'autre? - Autrement, cela pourrait signifier: 1. Compiler les deux. 2. Exécutez-en un. 3. Sans arrêter le premier, exécutez l'autre. (parce que l'anglais est bizarre comme ça) – immibis

+0

Si vous êtes sur Linux, fork() et exec() conjointement vous permettriez d'exécuter deux fichiers exécutables différents en même temps, mais vous ne pouvez pas exécuter un programme pendant la compilation il. Il existe probablement des fonctions similaires dans Windows et d'autres systèmes d'exploitation non-POSIX. –

+0

J'essaie de comprendre comment vous êtes censé exécuter un programme pendant qu'il est en train de compiler. Il pourrait y avoir une erreur de grammaire dans cette citation quelque part ... – user4581301

Répondre

0

Vous pouvez créer un fichier BAT et démarrer les deux programmes presque simultanément:

START first.exe 
START second.exe 
0

« devrait être compilé et exécuté en même temps »

Je pense qu'il est clair qu'un programme peut ne pas être exécuté avant d'avoir été compilé (ceci est un problème grammatical mineur, et devrait être ignoré).


Sous Linux, mon mécanisme préféré pour lancer un processus est popen appelé par mon programme C++.

En C++, il est facile pour un thread (appelons ceci votre processus de démarrage) d'utiliser popen pour lancer autant de processus que nécessaire pour votre application (appelez ces processus de travail).

J'utiliserais alors des messages pour synchroniser le démarrage (c'est-à-dire que les processus de travail devraient s'auto-initialiser, puis attendre (au démarrage) un message d'ouverture du processus de démarrage). Ces messages de démarrage fonctionnent de la même manière que votre application les utiliserait. Cela garantit que les multiples processus de travail s'exécutent en même temps (mais dans les limites du nombre de cœurs disponibles pour votre système).