寻找一个在线运行 c++的方案

231 天前
 yuzhixin411416

我想做个少儿编程网站

最基础的功能是能够做到在线运行 c++代码,输入输出能够动态持续的进行

这种都用什么方案呀

类似学而思的小猴编程: https://www.xiaohoucode.com/

3339 次点击
所在节点    C++
19 条回复
yuzhixin411416
231 天前
一个新的例子: https://www.onlinegdb.com/
tool2dx
231 天前
搜 clang wasm online ,有大佬做过,能编译简单代码。
zsh2517
231 天前
@yuzhixin411416 应该是容器化或者类似的东西。实际发送到一个 Linux 机器执行(做好安全措施)

neofetch 是个 shell 脚本,https://github.com/dylanaraps/neofetch/blob/master/neofetch 。贴过来运行

https://onlinegdb.com/XmASG-pIl

输出:

runner30@Check
--------------
OS: Ubuntu 22.04.4 LTS x86_64
Host: Google Google Compute Engine
Kernel: 6.8.0-1020-gcp
Uptime: 1 hour
Packages: 1268 (dpkg)
Shell: sh
Theme: Adwaita [GTK3]
Icons: Adwaita [GTK3]
CPU: Intel Xeon (8) @ 2.799GHz
Memory: 2658MiB / 7937MiB
iYume
231 天前
直接参照 OJ 平台源码呗,更 awesome 一点,甚至可以 jupyter + c++ REPL
yuzhixin411416
231 天前
@tool2dx 这个我试了,有 std::cin 的代码不停下来等我输入
yuzhixin411416
231 天前
@zsh2517 这种我能理解,但是动态输入输出这块搞不明白,如何能做到 执行到 std::cin 能够等待我输入
gam2046
231 天前
唔,这种方案是否可行,接受到用户输入的代码后,创建一个 websocket 到后端。

后端将代码写入文件,然后 docker run -rm -it -v user_input.c:/workspaces/user_input.c some_image bash -c "gcc user_input.c -o main && chmod +x main && ./main"

然后后端将这个 docker 进程的输入输出流直接 transfer 到 websocket ,应该能实现一个简单的在线运行效果。剩下的就是提高安全性的操作了
NavilleZhang
231 天前
NavilleZhang
231 天前
mahaoqu
231 天前
其实这一切都不需要服务器。你只需要用 JS 写一个 C++ 解释器,然后实现一个 TTY ,用它实现 STL 里的 iostream 就可以了。如果只是为了教学连 POSIX 都不需要实现,还是很容易的(笑)
tool2dx
231 天前
@mahaoqu 对于我们这些写过 wasm 的不难,对于楼主要实现这些,估计挺难的。要和 GPT 聊上个大半天。
zsh2517
231 天前
@yuzhixin411416 #5 如果要实时的话,关键词 pty 。或者简单一点直接接管 stdio 也行

参考项目: https://github.com/tsl0922/ttyd 可以看效果
shylockhg
231 天前
有服务器直接发到服务器运行,没有可以研究 wasm
myderr
231 天前
不知道这个行不行,这个现在可以运行 node 环境 https://webcontainers.io/
wnpllrzodiac
230 天前
vscode server
flyqie
230 天前
@yuzhixin411416 #6

stdin 和 stdout 重定向一下就可以了。

wasm 和远程跑可以自己选,远程跑比较好扩展,而且对客户端需求没那么高,当然劣势也明显。
flyqie
230 天前
@flyqie #16

哦对了,可能还得重定向下 stderr
yuzhixin411416
230 天前
感谢各位彦祖,最终测试 pty 完美符合我的希求,就连图形输出也一并解决了
yuzhixin411416
230 天前
感谢提供思路,给大家一个小红包吧,支付宝口令:我爱 v2 谢谢大家

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1106524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX