我正在组织一场编程比赛。我需要创建一个程序来逐个字符地检查另一个程序(参与者的可执行文件)的输出。要求是:
- 程序必须
平台无关
。 - 参与者不得获得输入和正确的输出。参与者所做的就是将其程序的名称传递给检查者。检查器会告诉你答案是否正确,仅此而已。
- 不得向参与者本人展示参与者程序的输出 - 否则他可能会据此计算出输入。
对于第二部分,是否可以以某种方式将输入和输出存储在可执行文件本身中?我不想从加密文件中读取..这让事情有点不方便..
程序应该像这样工作:
checker.exe question1.exe
Correct answer, congratulations!
Please show this to a volunteer.
我尝试使用标准 C 库中的 popen
和 pclose
函数。
但问题是,在 Linux 中,它会打开一个 shell,显示参与者程序的输出,而根据第三个要求,这不应该发生。
什么是完成此任务的简单方法?提前致谢。
编辑:
我需要将针对每个问题制作的可执行文件专门交给参与者。
最佳答案
是的,很容易不在 shell 中存储信息...只需使用管道。
例如
$ question | checker
检查器可以打印它是否有效。这一切都发生在内存中。
<小时/>如果您希望用户能够自己执行此操作,只需将此代码放入脚本文件中,设置该文件,以便用户只能执行和读取权限。然后将脚本设置为以 su 身份运行。然后脚本可以进行检查(即运行检查器 - 或进行比较)。如果需要比较,数据文件可以位于脚本外部,并且用户没有该文件的权限,则他们无法读取数据。
关于c - 检查另一个程序的输出的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15263548/