编译.c文件(使用gcc)并运行它,从文件中获取输入

编译.c文件(使用gcc)并运行它,从文件中获取输入,gcc,cmd,exec,Gcc,Cmd,Exec,我正在创建一个网站(php)来编译.c文件,并使用文件中的一些输入运行.exe文件。我的操作系统是windows。我正在上传.c文件,然后执行exec(gcc…)命令。你能告诉我上传的文件是如何编译的(如果是其他更好的方式),使用一些输入运行并收回结果的吗?当运行yourprog.exe时,你可能想使用(在cmd窗口中)。因此,如果您的数据在mydata.txt中,您将在命令行中运行yourprog.exe1时,您将进行测试,在这种情况下,执行FILE*f=fopen(argv[1],“r”)并

我正在创建一个网站(php)来编译.c文件,并使用文件中的一些输入运行.exe文件。我的操作系统是windows。我正在上传.c文件,然后执行exec(gcc…)命令。你能告诉我上传的文件是如何编译的(如果是其他更好的方式),使用一些输入运行并收回结果的吗?

当运行
yourprog.exe
时,你可能想使用(在
cmd
窗口中)。因此,如果您的数据在
mydata.txt
中,您将在命令行中运行
yourprog.exe

main
有多个参数时(例如运行
yourprog.exe mydata.txt
),可以使用(例如调用
fopen
)。然后,当传递给
main
argc
为>1时,您将进行测试,在这种情况下,执行
FILE*f=fopen(argv[1],“r”)
并从
f
读取输入(使用
fscanf
)(检查
f
是否为空后)

编码前,请务必阅读文档(例如,您使用的每个函数的文档)。不要忘记启用所有警告和调试信息(因此使用
gcc-Wall-Wextra-g yourprog.c-o yourprog.exe
…改进您的代码以避免出现警告)

当然读了

我正在创建一个网站来编译.c文件并运行带有一些输入的.exe文件

您可能不具备明智地做到这一点的技能(涉及到巨大的安全风险);如果你这样做了,你就不会用如此含糊的措辞问你的问题了。你为什么不使用

如果你仍然想在一个可公开访问的web服务器上编译和运行任意C代码,你首先应该考虑避免(如果另一个大陆上的坏人上传了恶意C代码并在你的服务器上运行,你不想坐牢,当这种情况发生时,你可能要承担责任和法律责任)。阅读并了解大多数解决方案(它们很难理解)都在Linux之上(因此您需要先学习Linux)

您还可以考虑将C代码转换为(或JavaScript),并在用户的浏览器上运行结果。这并不容易,但可以减轻web服务器上的风险(因为C代码将在客户端浏览器中运行)

如果你只想开发一个内部站点(只能在你信任的人的一些内部网上访问),你可以考虑使用PHP的函数(运行一些<代码> Gcc.exe 命令,或者运行<代码> YouPr.exe < /Cord>,并注意它的输出)。该PHP函数的灵感来自POSIX(您将找到大量的示例和解释)

您可能缺乏有关操作系统的基本知识。你可以通过阅读来获得它们。还要确保更多地了解协议、HTML5和相关技术(AJAX、WebSocket等)。你可能也不了解他们


我还倾向于相信Linux(顺便说一句,它在大多数web服务器上使用)比Windows更适合您的目标。但是你的目标比你所相信的要雄心勃勃和困难得多。

答案很简单:从cmd如果你想运行一个包含inputs.txt输入的test.exe文件,并将输出保存在output.txt中,你只需编写这个。test.exeoutput.txt

为什么用
php
标记这个?上面所有的事情最后我需要从phpWhy从php运行它?你到底会怎么做?为什么不用PHP编写所有代码,或者使用C代码中的一些HTTP服务器库(例如…)?在您的情况下,混合使用几种编程语言是过分的。如果需要PHP,如果你想从PHP调用你的C代码,请阅读PHP。你能告诉我我的项目的最佳方式吗。我有一个网页,我上传了.c文件。在那之后,我需要编译这个.c文件,用一些输入(位于某处)运行它,然后使用rerultsA站点来完成这项工作。我希望您正在计划针对恶意参与者提供足够的安全保护。该网站只能由特定人员使用,而不是由所有人使用。我想执行简单的项目。恶意代码没有风险亲爱的Basile Starynkevitch,请您详细解释一下“php的popen函数,以及如何使用文件中的输入运行.exe文件?不,您需要花很多天(甚至几周)来阅读更多内容。顺便说一句,我不懂php,也从未使用过它。(我建议您改为使用php编写网站代码)。我的感觉是,你缺乏很多编程技能和基本知识来实现你的目标。你必须在之前学习这些技能(这可能需要几个月),因此我的感觉是你没有足够的知识来实现你的目标。它们远没有表面上看起来那么简单。有关有用的见解,请参阅