返回信息流要写一个小网站,类似于我在网页上输入C语言代码,然后传到服务器调用gcc编译,然后返回编译结果。
如何在php 或者 javascript 里面调用服务器的 gcc命令呢。
第一次写web程序,求助.
这是一条镜像帖。来源:北邮人论坛 / www-technology / #20638同步于 2013/7/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
web调用系统命令问题
liuhatry
2013/7/3镜像同步35 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你能告诉我用什么东西么,我自己查就可以了。。
【 在 nuanyangyang 的大作中提到: 】
: 第一次写web程序,还是不要写这么复杂的东西了吧。
是不是有什么其他的方法来代替这三个呢?
【 在 binux 的大作中提到: 】
: exec() or system() or passthru()
: 反正各种漏洞就是这么出来的
好。你需要知道:
一、如何创建进程,具体包括:
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 的大作中提到: 】
: 你能告诉我用什么东西么,我自己查就可以了。。
或者,要不要把具体的需求说一说?如果是想“持续集成”,倒是有现成的方法。
【 在 liuhatry 的大作中提到: 】
: 可是头要实现这个功能啊