Sie müssen Ihren eigenen Compiler schreiben.
Bedenken Sie:Kein normales Betriebssystem unterstützt das, was Sie wollen. Sie möchten, dass beide ausführbaren Dateien in einem einzigen Prozess ausgeführt werden, aber dieser Prozess kann Betriebssystemaufrufe durchführen oder auch nicht, abhängig von einer Verrücktheit innerhalb des Prozesses, die das Betriebssystem überhaupt nicht versteht.
Dies ist mit Ihrem benutzerdefinierten Compiler kein Problem mehr, da er die anstößigen Anweisungen einfach nicht erstellt. Es ähnelt Java und .Net, die auch solche Betriebssystemaufrufe außerhalb ihrer Kontrolle verhindern.
Eine portable Lösung:Google Native Client
Eine mögliche Linux-Lösung:
- AppArmor-Profil mit „Hats“ erstellen (ein „Hat“ ist eine Sandbox-Konfiguration, zu der die Anwendung programmgesteuert mit libapparmor wechseln kann),
- lassen Sie die Hauptanwendung eine "Pipe" erstellen,
- haben die Hauptanwendung "fork",
- ändern sich in einen "Hut", der der untergeordneten Anwendung entspricht,
- "exec" die untergeordnete Anwendung,
- die Hauptanwendung und die untergeordnete Anwendung kommunizieren über die zuvor erstellte "Pipe".