Vous devrez écrire votre propre compilateur.
Considérez :aucun système d'exploitation normal ne prend en charge ce que vous voulez. Vous voulez que les deux exécutables s'exécutent dans un seul processus, mais ce processus peut ou non effectuer des appels au système d'exploitation en fonction de certaines bizarreries à l'intérieur du processus que le système d'exploitation ne comprend pas du tout.
Ce n'est plus un problème avec votre compilateur personnalisé, car il ne créera tout simplement pas les instructions incriminées. C'est similaire à Java et .Net, qui empêchent également de tels appels de système d'exploitation hors de leur contrôle.
Une solution portable :Google Native Client
Une solution Linux possible :
- Créer un profil AppArmor avec des "chapeaux" (un "chapeau" est une configuration de sandboxing vers laquelle l'application peut basculer par programme avec libapparmor),
- demander à l'application principale de créer un "tuyau",
- avoir l'application principale "fork",
- changer en "chapeau" correspondant à l'application fille,
- "exec" l'application enfant,
- l'application principale et l'application enfant communiquent via le "pipe" créé précédemment.