gpt4 book ai didi

php - 在 php 中,system() 函数是如何工作的?

转载 作者:太空狗 更新时间:2023-10-29 12:20:18 25 4
gpt4 key购买 nike

我在一个项目中工作,该脚本将在 Linux 下运行。它有很多模块,都是用C++写的。我需要从 PHP 调用这些模块。

我的问题如下:

  1. 我的模块是软件包中的模块之一。
  2. 我们的软件有 PHP 层来获取用户输入并将其存储在数据库中,并在需要时调用 C++ 引擎。
  3. 所有模块都在运行并使用一些由基本模块设置的环境变量。
  4. 有一层 PHP,我们将用户输入输入到我们的 C++ 引擎。
  5. 我需要从 PHP 调用一个应用程序 (abc.out),它将填充数据库。

问题是我必须在应用程序运行之前设置一个新的环境变量。

我正在使用 getenv() 获取旧的环境变量,然后将路径附加到它并再次设置。我已经使用 putenv() 设置了新的环境变量。

设置环境变量后,我使用 system() 从 PHP 调用该应用程序,它正在运行。

我怀疑这个环境变量的变化是否会影响正在运行的其他模块。

一件事是,如果我们对多个操作使用 system(),我可以设置环境变量并从同一个 system() 调用中调用我的应用程序。我怀疑这是否也会影响正在运行的其他应用程序,或者只影响正在使用 system() 调用的特定应用程序。

也就是说 system() 是为每个程序创建一个新 session ,我们是否调用它?

谢谢

最佳答案

好吧,php 是开源的 :-) 您需要查看文件 ext/standard/exec.c .系统被实现为对 php_exec_ex 的调用,它通过 php_exec 使用一个名为 VCWD_POPEN 的宏。 ,在 Linux 系统上使用 popen()系统调用。

因此,每次调用 PHP system()在 Linux 系统上将通过一个新的 popen() 执行系统调用,所以是的,单独的调用是隔离的。我没有检查 Windows。

关于php - 在 php 中,system() 函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11560929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com