1
LaughingMeMe 2015-11-18 22:11:19 +08:00
这不是 ACM 的测题么- -
|
2
Valyrian 2015-11-18 22:11:36 +08:00
execve?
|
3
mahone3297 2015-11-18 22:12:11 +08:00
思路:
貌似可以文件上传到 1 个地方,这里用 php ,然后用 gcc 编译到一个地方,然后用 shell 或者 php ( exec 函数),传入你期望的入参,得到返回值,校验程序是否有问题 我觉得,关键点,在于要做好一个沙盒,不然。。。这其实就相当于一个 oj 吧。。。 |
4
z742364692 OP |
5
z742364692 OP @mahone3297 后台 c 如何对多个文件依次操作呢(假设这些文件全部传到了一个目录下)?小弟不懂
|
6
feuvan 2015-11-18 22:15:03 +08:00 1
这不是 oj 吗?
php 的话记得配置好 disable_classes disable_functions 们。。 |
7
LaughingMeMe 2015-11-18 22:16:15 +08:00 1
acm.hdu.edu.cn....and other else..?
|
8
virusdefender 2015-11-18 22:17:57 +08:00 1
|
9
wizardoz 2015-11-18 22:22:16 +08:00
不会帮顶
|
10
northisland 2015-11-18 22:24:29 +08:00
多个文件读取,,,顺序读取,还是并行读取?
C 调用 bash ?只知道 popen 这个函数 PHP 是最好的语言 |
11
Kirscheis 2015-11-18 22:24:39 +08:00 via iPhone 3
告诉你们老师去找个现成的开源 OJ 就可以了。
https://github.com/mjnaderi/Sharif-Judge https://github.com/51isoft/bnuoj 没事造什么轮子。 |
12
z742364692 OP @virusdefender 有没有 c 的,这个做出来,我就直接过了,哈哈
|
13
htfy96 2015-11-18 22:44:32 +08:00
@Kirscheis 看了下第一个 OJ 的后端貌似禁 fork 之类的居然是靠强制#define fork error 然后屏蔽#undef 来实现的……这样随便就能绕过去吧……
|
14
z742364692 OP |
15
hqs123 2015-11-18 22:50:11 +08:00
这个我用 java 也可以实现.
|
16
z742364692 OP @hqs123 java 不会,学的 c 和汇编
|
17
adadada 2015-11-18 23:48:10 +08:00
一定要用 C 吗?批量编译的部分写个脚本应该就可以搞定了吧?
|
18
oska874 2015-11-19 00:58:30 +08:00 via Android
顺序读入多个文件->调用 shell 分别编译->调用 shell 执行程序->调用 shell 比较结果和答案是否一样
|
19
twoconk 2015-11-19 08:22:53 +08:00 via Android
楼上好多正解
|
20
harry890829 2015-11-19 09:15:35 +08:00
Linux C 应该会用 makefile 把,你文件上传之后,根据文件名,生成一个 makefile ,然后执行 shell 命令,“ make &> XXX ”这个 shell 会把 make 的结果写入到一个文件中,然后你读取这个文件,查看是否有 error ,就可以啦
|
21
hitmanx 2015-11-19 17:07:26 +08:00
这个用脚本语言应该会很简单,用 C\C++的话,执行 shell 指令可以用 std::system(),例子在这里 http://en.cppreference.com/w/cpp/utility/program/system
|