寻找一个在线运行 c++的方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuzhixin411416
V2EX    C++

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

  •  
  •   yuzhixin411416 326 天前 3612 次点击
    这是一个创建于 326 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想做个少儿编程网站

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

    这种都用什么方案呀

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

    第 1 条附言    325 天前
    感谢提供思路,给大家一个小红包吧,支付宝口令:我爱 v2 谢谢大家
    19 条回复    2025-01-21 11:39:57 +08:00
    yuzhixin411416
        1
    yuzhixin411416  
    OP
       326 天前
    一个新的例子: https://www.onlinegdb.com/
    tool2dx
        2
    tool2dx  
       326 天前 via Android
    搜 clang wasm online ,有大佬做过,能编译简单代码。
    zsh2517
        3
    zsh2517  
       326 天前
    @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
        4
    iYume  
       326 天前
    直接参照 OJ 平台源码呗,更 awesome 一点,甚至可以 jupyter + c++ REPL
    yuzhixin411416
        5
    yuzhixin411416  
    OP
       326 天前
    @tool2dx 这个我试了,有 std::cin 的代码不停下来等我输入
    yuzhixin411416
        6
    yuzhixin411416  
    OP
       326 天前
    @zsh2517 这种我能理解,但是动态输入输出这块搞不明白,如何能做到 执行到 std::cin 能够等待我输入
    gam2046
        7
    gam2046  
       326 天前
    唔,这种方案是否可行,接受到用户输入的代码后,创建一个 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 ,应该能实现一个简单的在线运行效果。剩下的就是提高安全性的操作了
    mahaoqu
        10
    mahaoqu  
       326 天前
    其实这一切都不需要服务器。你只需要用 JS 写一个 C++ 解释器,然后实现一个 TTY ,用它实现 STL 里的 iostream 就可以了。如果只是为了教学连 POSIX 都不需要实现,还是很容易的(笑)
    tool2dx
        11
    tool2dx  
       326 天前
    @mahaoqu 对于我们这些写过 wasm 的不难,对于楼主要实现这些,估计挺难的。要和 GPT 聊上个大半天。
    zsh2517
        12
    zsh2517  
       326 天前
    @yuzhixin411416 #5 如果要实时的话,关键词 pty 。或者简单一点直接接管 stdio 也行

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

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

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

    哦对了,可能还得重定向下 stderr
    yuzhixin411416
        18
    yuzhixin411416  
    OP
       325 天前
    感谢各位彦祖,最终测试 pty 完美符合我的希求,就连图形输出也一并解决了
    yuzhixin411416
        19
    yuzhixin411416  
    OP
       325 天前
    感谢提供思路,给大家一个小红包吧,支付宝口令:我爱 v2 谢谢大家
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1467 人在线   最高记录 6679       Select Language
    创工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:42 PVG 00:42 LAX 08:42 JFK 11:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86