检查另一个程序输出的程序

时间:2013-03-07 05:10:14

标签: c linux windows ipc pipe

我正在组织一场编程比赛。我需要创建一个程序,逐个字符地检查另一个程序(参与者的可执行文件)的输出。要求是:

  • 该计划必须为platform independent
  • 参赛者无法使用输入和正确的输出。所有参与者都将其程序的名称传递给检查者。检查员会告诉答案是否正确,这就是它。
  • 参与者程序的输出不得向参与者自己显示 - 或者他可以根据该输出找出输入。

对于第二部分,是否可以以某种方式将输入和输出存储在可执行文件中?我宁愿不从加密文件中读取..这会让事情变得有点不方便..

程序应该像这样工作:

  

checker.exe question1.exe

     

正确答案,恭喜!

     

请向志愿者展示。

我尝试使用标准C库中的popenpclose函数。

但问题是在Linux中,它会打开一个shell,显示参与者程序的输出,这不应该按照第3个要求发生。

实现这一目标的简单方法是什么?提前谢谢。

修改

我需要将针对每个问题的可执行文件专门交给参与者。

2 个答案:

答案 0 :(得分:0)

一种选择是要求用户通过您提供的公钥加密其程序的输出:gnupg可能是一个很好的候选者。使用您的私钥解密输出并进行比较。

否则,如果不将程序的输出存储到某个文件(二进制或文本)并且不损害数据隐私,则不清楚如何进行比较。

答案 1 :(得分:0)

是的,很容易永远不会将信息存储在shell中......只需使用管道。

例如

  $ question | checker

Checker是否可以打印。这一切都发生在记忆中。


如果您希望用户能够自己执行此操作,只需将此代码放在脚本文件中,请设置该文件,以便用户只执行并读取priv。然后将脚本设置为su运行。然后脚本可以进行检查(即运行检查程序 - 或进行比较)。如果需要进行比较,则数据文件可以在脚本外部,并且用户无权访问该文件,因此无法读取数据。