![]() | 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 ![]() 这不是 oj 吗? php 的话记得配置好 disable_classes disable_functions 们。。 |
![]() | 7 LaughingMeMe 2015-11-18 22:16:15 +08:00 ![]() acm.hdu.edu.cn....and other else..? |
![]() | 8 virusdefender 2015-11-18 22:17:57 +08:00 ![]() |
![]() | 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 ![]() 告诉你们老师去找个现成的开源 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 |