作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的网页中有一个文本区域,用户可以在其中粘贴 C 程序。在服务器端,我将此代码适本地保存在文件中。我使用shell_exec()函数调用gcc来执行c程序。这很好用。执行部分也是如此。
但是如果用户(无意)故意给出无限循环怎么办?当我使用该功能时 -
shell_exec("./a.out")
程序进入无限循环。如何从 php 脚本本身中跳出这样的循环?有办法吗?
最佳答案
使用ulimit限制CPU使用率?请注意,这是每个进程的,因此如果用户不断“ fork ”该进程,您可能会遇到麻烦。
另一种方法是使用一个包装进程来监视并终止其所有子进程,并让它启动 a.out。这取决于您是否可以信任您的“客户”(例如,他们是您的好 friend ,还是这是一个学校项目或公共(public)网站) - 您的偏执程度应该随着威胁程度的增加而增加。
如果您想要更精细的安全性,请在虚拟机中通过 ssh 运行该过程。然后,只需在 X 秒后终止虚拟机,然后从保存的快照启动一个新的虚拟机即可。 (您可以有一个准备运行的虚拟机池,这样用户就不必等待虚拟机加载)
关于php - 如何为从php脚本调用的c程序设置计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988190/
我是一名优秀的程序员,十分优秀!