编程语言在线运行代码是如何实现的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lohiecan
V2EX    推广

编程语言在线运行代码是如何实现的?

  •  
  •   lohiecan 2020-04-06 18:22:11 +08:00 4427 次点击
    这是一个创建于 2020 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在线运行代码, 比如 http://jsrun.net 就是支持非常多种语言的支持。

    他们是把用户提交上来的代码保存到一个文件里面, 如果是 c 语言就要先进行编译,然后再执行可执行文件,然后再发执行结果返加到用户看到的网页上面, 比如 http://c.jsrun.net 就是 c 语言的在线代码运行。

    其中的过程其实非常复杂, 但是 JSRUN 的在线执行非常的快, 主要是用了 超高速 SSD 增加文件读写能力, 这种 SSD 一般需要 3GB/s 以上的读写速度才可以。

    另外还要解决的安全性问题, 用户如果提交上来的是死循环,那么直接机器就卡死了。 如果提交上来的代码是删除整个硬盘,那么服务器就完蛋了。 中间要作非常的多的识别 来排除恶意代码的运行。

    JSRUN 是非常好的一个网站,在国内已经是大龙头了, 建议你直接使用他们的服务就可以了。 做这些工作需要大量的精力维护,不建议再重复造轮子。

    25 条回复    2020-04-08 12:44:20 +08:00
    xiri
        1
    xiri  
       2020-04-06 18:46:45 +08:00   8
    你这个广告打的有点不用心啊,至少换给 id 吧,首页上还能看到你的另一个帖子“我做了一个在线运行代码的网站叫 JSRUN, 大家有兴趣吗?”呢
    renmu
        2
    renmu  
       2020-04-06 18:50:16 +08:00 via Android
    自问自答 23333
    myqoo
        3
    myqoo  
       2020-04-06 18:51:44 +08:00
    不错,可以用来挖门罗币
    lohiecan
        4
    lohiecan  
    OP
       2020-04-06 20:40:03 +08:00
    @xiri 哈哈哈,我就是想增加一些点击量
    liuxey
        5
    liuxey  
       2020-04-06 20:46:46 +08:00
    恭喜用户 -1
    zhuzhibin
        6
    zhuzhibin  
       2020-04-06 21:17:46 +08:00 via iPhone
    老哥看了你的广告 我不再用 jsrun 了嘻嘻
    Nugine0
        7
    Nugine0 &nsp;
       2020-04-06 21:20:13 +08:00 via Android
    道理我都懂,在线执行速度和 SSD 有啥关系?
    sunnywqf
        8
    sunnywqf  
       2020-04-06 22:12:49 +08:00
    死循环,删库都已经拦截了,不知道还有什么其他的可以玩玩的?
    yafoo
        9
    yafoo  
       2020-04-06 23:09:27 +08:00 via Android
    支持,老早就收藏了。不过这广告打的确实不用心
    just1
        10
    just1  
       2020-04-06 23:12:22 +08:00
    报一个 bug 吧,首页的项目鼠标放预览图上会出现三个按钮,鼠标移到按钮上,预览图上方的白色遮罩会一直闪烁
    lhx2008
        11
    lhx2008  
       2020-04-06 23:16:48 +08:00 via Android
    就是 docker 呗
    supercaizehua
        12
    supercaizehua  
       2020-04-07 01:23:42 +08:00
    建议发到广告节点
    fengshils
        13
    fengshils  
       2020-04-07 07:31:23 +08:00 via Android
    恭喜用户 -1
    labubu
        14
    labubu  
       2020-04-07 09:06:00 +08:00
    已报警
    lohiecan
        15
    lohiecan  
    OP
       2020-04-07 11:23:16 +08:00 via Android
    @zhuzhibin 悲伤 +1
    lohiecan
        16
    lohiecan  
    OP
       2020-04-07 11:24:57 +08:00 via Android
    @Nugine0 主要工作量是磁盘读写的操作,io 性能影响整体速度
    lohiecan
        17
    lohiecan  
    OP
       2020-04-07 11:25:13 +08:00 via Android
    @liuxey 悲伤 +1
    lohiecan
        18
    lohiecan  
    OP
       2020-04-07 11:25:23 +08:00 via Android
    @liuxey 悲伤 +2
    lohiecan
        19
    lohiecan  
    OP
       2020-04-07 11:26:24 +08:00 via Android
    @yafoo 这些支持 哈哈哈
    lohiecan
        20
    lohiecan  
    OP
       2020-04-07 11:27:18 +08:00 via Android
    @just1 嗯嗯 谢谢,我这就去改良一下
    deplives
        21
    deplives  
       2020-04-07 15:45:54 +08:00
    看了下个人记录,emmm 把广告打得这么清新脱俗的我倒是第一次见
    Eugene1024
        22
    Eugene1024  
       2020-04-07 16:36:44 +08:00
    话说是如何解决把不同的代码发送到不同的编译器里面去运行呢
    lohiecan
        23
    lohiecan  
    OP
       2020-04-07 22:39:47 +08:00
    @deplives 谢谢老哥夸赞
    lohiecan
        24
    lohiecan  
    OP
       2020-04-07 22:40:15 +08:00
    @Eugene1024 这个简单,调用不同编译器就可以了
    noparking188
        25
    noparking188  
       2020-04-08 12:44:20 +08:00
    我竟然觉得这广告打的有点可爱
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2416 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 00:03 PVG 08:03 LAX 17:03 JFK 20:03
    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