var fs = require('fs'); var cp = require('./us.clang.js'); //根据前端代码生成一个Guid的唯一文件,以供gcc编译。如果gcc支持编译内存流就不用生成文件了 //s代表了文件内容,f代表了文件名 type代表了文件类型 exports.createFileStream = function (res, s, f, type) { //c语言明确规定要后缀为.c。所以全部加后缀,不然可以省下一些代码。 var _suf;//后缀 switch (type) { case 'C': _suf = '.c'; break; case 'PHP': _suf = '.php'; break; case 'Net': _suf = '.cs'; break; case 'Python': _suf = '.py'; break; case 'Nodejs': _suf = '.js'; break; case 'Ruby': _suf = '.rb'; break; case 'Perl': _suf = '.pl'; break; case 'Lisp': _suf = '.lisp'; break; default: break; } var wstream = fs.createWriteStream('./output/userfiles/'+ f + _suf);//保存文件 s = decodeURIComponent(s); wstream.write(s); // on Node.js older than 0.10, add cb to end() wstream.end(function () { //console.log('生成文件成功');//执行编译命令。 switch (type) { case 'C': cp.exegcc(res, f, type); break; case 'PHP': cp.exephp(res, f, type); break; case 'Net': cp.exenet(res, f, type); break; case 'Python': cp.exepython(res, f, type); break; case 'Nodejs': cp.exenodejs(res, f, type); break; case 'Ruby': cp.exeruby(res, f, type); break; case 'Perl': cp.exeperl(res, f, type); break; case 'Lisp': cp.exelisp(res, f,type); break; default: break; } }); }