我参加了一些在线编程竞赛,发现在线评委在功能上使用得非常出色.
谈到这个话题,我的大学也即将举办在线编程竞赛,我负责这个活动.我正在评估我实施在线评判的选择.当然,我可以利用一些已经可用的评委,比如SPOJ的评委,但令我感到震惊的是,我和我的一些朋友也可以尝试构建一个.如果我们失败了,我们总能依靠这些.
那么,有谁可以给我一些概述或资源,我该如何得到它?如果我对评委如何实现"沙盒"有所了解,也会有所帮助.我们手拿了大约几个月.
更新这是我在SO 2上提出几个问题之后的两周内我的努力的结果http://github.com/anomit/loki
我一直在阅读它的手册页,但还没有成功地弄清楚它是如何工作的.在调用system()时,是一个新的子进程分叉和shell二进制exec() - 在其中编辑?这可能是一个愚蠢的猜测.
我正在研究一个不基于磁盘的虚拟文件系统,有点像/ proc.现在我想在其中创建一个符号链接到ext3文件系统上的目标.我还没有找到任何关于如何实现这一目标的标准文档.到目前为止我猜到的是我必须编写一个函数来symlink输入struct inode_operations.但坦率地说,即使使用功能参数,我也会感到茫然.
如果重要的话,我开始使用LWN的这个教程:http://lwn.net/Articles/13325/
编辑:我正在使用libfs,而不是FUSE
我一直试图在linux源代码中查看一个结构/联合,它与禁用PAE的x86系统上的PTE相对应.到目前为止,我在arch/x86/include/asm/page_32.h中只找到了以下内容
typedef union {
pteval_t pte;
pteval_t pte_low;
} pte_t;
Run Code Online (Sandbox Code Playgroud)
我现在有点困惑,因为我在我面前打开了英特尔参考手册第3A卷,并且该联合中的任何内容都与手册中解释的PTE中存在的十几个奇数字段相对应.
这可能是一个微不足道的问题,但对我而言,它更像是了解Linux内核中内存管理过程中的绊脚石.
编辑:我有2.6.29源代码
我正在使用times()函数来测量值,但我不确定我的方法是否正确.请看看和建议
struct tms tms_start, tms_end;
if (!(pid=fork()))
{
//some necessary operations here
times(&tms_start);
execl(...);
}
else if (pid)
{
//in parent
int status;
wait(&status);
times(&tms_end);
if (WIFEXITED(status))
{
if(WEXITSTATUS(status)==0)
{
clock_t real = tms_end.tms_cstime - tms_start.tms_stime
float running_time = real/(double)sysconf(_SC_CLK_TK);
}
}
}
Run Code Online (Sandbox Code Playgroud)