BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #20638同步于 2013/7/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

web调用系统命令问题

liuhatry
2013/7/3镜像同步35 回复
要写一个小网站,类似于我在网页上输入C语言代码,然后传到服务器调用gcc编译,然后返回编译结果。 如何在php 或者 javascript 里面调用服务器的 gcc命令呢。 第一次写web程序,求助.
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nuanyangyang机器人#1 · 2013/7/3
你是说这个吗: acm.bupt.edu.cn 或者 poj.org
liuhatry机器人#2 · 2013/7/3
差不多 但是怎么调用呢 【 在 nuanyangyang 的大作中提到: 】 : 你是说这个吗: acm.bupt.edu.cn 或者 poj.org
nuanyangyang机器人#3 · 2013/7/3
第一次写web程序,还是不要写这么复杂的东西了吧。
liuhatry机器人#4 · 2013/7/3
可是头要实现这个功能啊 【 在 nuanyangyang 的大作中提到: 】 : 第一次写web程序,还是不要写这么复杂的东西了吧。
liuhatry机器人#5 · 2013/7/3
你能告诉我用什么东西么,我自己查就可以了。。 【 在 nuanyangyang 的大作中提到: 】 : 第一次写web程序,还是不要写这么复杂的东西了吧。
binux机器人#6 · 2013/7/3
exec() or system() or passthru() 反正各种漏洞就是这么出来的
liuhatry机器人#7 · 2013/7/3
是不是有什么其他的方法来代替这三个呢? 【 在 binux 的大作中提到: 】 : exec() or system() or passthru() : 反正各种漏洞就是这么出来的
nuanyangyang机器人#8 · 2013/7/3
好。你需要知道: 一、如何创建进程,具体包括: 1. 你使用什么语言开发“web程序”的服务器端?(如php, java, python, ruby ...) 2. 你的Web程序在什么操作系统上跑?(Windows, Linux, OSX, BSD, ...) 3. 你这个这种语言在这个操作系统上如何建立新的进程(这里这个进程是编译器) 二、与这个进程通信,具体包括 1. 你将用户发过来的源代码存放在硬盘上的什么地方?因为编译器一般是通过文件输入的。 2. 你的Web服务器(如Java的Tomcat,以及Apache HTTPD等)以及你的操作系统有没有对存取硬盘文件加以限制?包括文件系统的权限,以及如果你使用SELinux,它是否限制Web服务器(如Apache HTTPD)不能随意读写除了某些特定目录意外的文件? 3. 你如何读取另外一个进程的标准输出(编译器打印在屏幕上的文本)?或者将其存入文件。 4. 这个进程结束(正常或异常结束),进程的创建者需要不需要额外处理?(如果你在Linux上创建新进程而不去wait,进程的尸体可能会将操作系统的TCB填满) 三、安全相关 1. 用户有没有可能发一些恶意的代码让你的服务器编译,让编译器长时间无法终止,或者占用大量的资源,如内存、硬盘空间等?如何防止这种情况? 2. 用户有没有可能通过控制文件名、文件内容,让你的服务器执行一些奇怪的命令,窃取服务器上的信息?如何防止这种情况? 四、网络通信相关 1. 编译有可能花费很长时间,你想让用户提交一个HTML表单之后,响应的页面里就有编译结果呢?还是提交表单以后,可以看到编译的状态,而不是立即看到结果呢? 2. 服务器可以同时编译几个文件?同时编译的文件越多,会不会越来越慢,以至于哪个都无法终止? 3. web服务器要处理并发的HTTP请求。思考:服务器会不会因为忙于编译一个文件,而连简单的网页浏览都被阻塞了? 4. 如果一个HTTP请求发到服务器,而服务器忙于编译,不能给予响应,客户端会不会认为服务器再也不相应了,而放弃,显示“超时”? 五、扩充思路 1. 是否专门放一个在服务器上运行的独立于Web服务器的“编译服务器”?Web服务器定时向数据库中提交待编译的程序以及选项(或者用其它通信方式告知“编译服务器”新的代码来了),而“编译服务器”在后台逐个处理数据库中新来的请求? 2. “编译服务器”可不可以是另外一台(或者另外几台)计算机? 3. “编译服务器”和Web服务器之间如何通信?数据库放在哪里? 【 在 liuhatry 的大作中提到: 】 : 你能告诉我用什么东西么,我自己查就可以了。。
nuanyangyang机器人#9 · 2013/7/3
或者,要不要把具体的需求说一说?如果是想“持续集成”,倒是有现成的方法。 【 在 liuhatry 的大作中提到: 】 : 可是头要实现这个功能啊