Ich habe ein einfaches Programm, sagen Sie folgendes:
%Vor%und ich habe es mit Emscripten kompiliert:
%Vor% Dies gibt mir eine ziemlich einfache von Emscripten generierte Webseite, die ein einfaches Fenster für Programm Ausgabe enthält. Der Aufruf fgets()
verursacht jedoch ein Browser-Popupfenster, vermutlich von prompt()
. Ich kann Dinge eingeben, und die Ergebnisse werden schließlich im Ausgabefenster angezeigt. Dies ist keine ideale interaktive Erfahrung.
Was ich möchte, ist eine konventionellere "Konsolen" -Schnittstelle, wo der Benutzer interaktiv in das Terminalfenster tippen kann, um Eingaben für das interaktive Programm zu liefern.
Ich vermute, dass die Lösung in etwas wie JQueryTerminal , , liegen könnte Hyper , oder Xterm.js , aber ich bin mir bisher nicht im Klaren darüber, wie man irgendeinen davon mit einem Emscript-kompilierten Programm verbindet .
Wie kann ich eine "Konsolen" -Schnittstelle zu meinem Emscripten-Code bereitstellen?
Es ist nicht genau das, was Sie wollten, ich denke, das ist nicht möglich, aber hier ist Prof of Concept von Async-Code, es missbrauchen Fetch-API in C und verwenden Proxy in JavaScript für XHR, die Nachrichten von C behandeln. Sie können es erweitern um irgendeinen asynchronen Code zu haben, der in JS erledigt werden muss. Das Beispiel verwendet jQuery Terminal und es verhält sich genau wie Ihr Beispiel C-Code.
Ich habe auch ein Problem mit async-Code in emscripten repo
erstelltTags und Links emscripten jquery-terminal xtermjs