我正在编写一个程序来评估学生提交的C ++代码。现在它使用系统调用来编译每个源文件,然后将输入重定向到文件并在进程中调用新的可执行文件,并在输出中搜索某些字符串。这也允许我对崩溃的程序的进程超时。
有没有比系统调用更好的方法呢?或者更好的方法来做到这一点?
答案 0 :(得分:2)
您可能希望在备用帐户下运行程序,例如使用基于密钥的身份验证的ssh是切换到虚拟帐户的好方法。
如果任何分配需要用户互动,那么expect
(基于Tcl)将是一个不错的选择。
答案 1 :(得分:0)
我无法想到在C / C ++中以其他方式运行外部可执行文件而不使用系统调用(直接或间接)。
您可以考虑使用Perl / Python而不是编写C ++来进行此类检查/自动化。
自从您在Perl中开始编写脚本以来,您可能需要查看:
http://perldoc.perl.org/functions/exec.html
http://perldoc.perl.org/Shell.html
http://perldoc.perl.org/functions/system.html
http://www.perlmonks.org/?node_id=78523