linux和windows操作系统使用PHP向C/C++传递参数的方法(保姆级)exec()函数详解

相信大家在开发服务器的时候都会遇到需要在PHP中调用C/C++的情况,而想要调用C++必然涉及到传递参数,接下来将会为大家介绍传递PHP在不同的操作系统中向C/C++语言传参的方法。

构建基础的POST/GET方法的表单

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>来词作曲</title>
</head>
<body>
<form action="index.php" target="_blank" method="post">
    <input type="text" name="geci1"><br>
    <input type="text" name="geci2"><br>
    <input type="text" name="geci3"><br>
    <input type="text" name="geci4"><br>
    <input type="text" name="geci5"><br>
    <input type="text" name="geci6"><br>
    <input type="text" name="geci7"><br>
    <input type="text" name="geci8"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

PHP代码

<?php
$geci1 = $_POST["geci1"];
$geci2 = $_POST["geci2"];
$geci3 = $_POST["geci3"];
$geci4 = $_POST["geci4"];
$geci5 = $_POST["geci5"];
$geci6 = $_POST["geci6"];
$geci7 = $_POST["geci7"];
$geci8 = $_POST["geci8"];

$pathwin = "start /D C:\Users\asus\ text.exe";
$pathlinux = "./yrsyyds";
$rec = exec("$pathwin $geci1 $geci2 $geci3 $geci4 $geci5 $geci6 $geci7 $geci8",$res,$rc);
echo "$res";
?>

效果:

当用户输入之后点击提交便会通过 POST 方法将值传递到相应的PHP文件中

PHP中的打开程序的函数exec()

其实php中能够打开外部程序的函数还有很多,这里我们就不一个一个介绍了,就着重介绍exec()函数

exec(  command ,  string  ,  return )

这里分别解释三个参数类型(不严谨的标记了一下,方便大家理解)

  1. command:这个参数是输入一段命令,exec函数会自动调用文件所在操作系统的控制台去执行这个命令
  2. string:这里可以设置一个变量用于收录控制台执行完命令后接下来弹出来的语句。
  3. return:这里定义了一个整形,用于存储程序最后的返回值,比如C语言main()函数最后返回的return 0;接下来介绍

接下来介绍linux和windows的操作系统打开文件的命令

windows操作系统中start命令

start只能在cd目录所在文件夹打开目录里的文件,默认情况下,也可以自行输入path

start命令可以打开一个一个文件

假设我们已经有一个用c写了的exe文件放在默认的user目录里,叫做text.exe

start  text.exe   ()   ()   ()   ()  ()......

这里着重强调括号里的东西。

在我们使用start命令打开程序时,可以在命令的最末端输入字符串,每个字符串用空格隔开,这个字符串会传递到程序的*argv[ ]数组里,可以通过他来调用

 举个例子

<?php
$geci1 = $_POST["geci1"];
$geci2 = $_POST["geci2"];
$geci3 = $_POST["geci3"];
$geci4 = $_POST["geci4"];
$geci5 = $_POST["geci5"];
$geci6 = $_POST["geci6"];
$geci7 = $_POST["geci7"];
$geci8 = $_POST["geci8"];

$pathwin = "start /D C:\Users\asus\ text.exe";
$rec = exec("$pathwin $geci1 $geci2 $geci3 $geci4 $geci5 $geci6 $geci7 $geci8",$res,$rc);
echo "$res";

?>

在这个代码中,我定义了一个字符串,用于储存我希望exec()执行的windows命令,也就是打开text.exe程序

当我放在exec()函数中时,我将用户输入的字符串同时和我定义字符串组合在一起用空格隔开,构成了一个完成的命令

一旦当我点击提交,就会在text.exe文件中printf出$pathwin  ,$geci1,$geci2这几个变量

他们分别是储存在字符串*argv[0],*argv[1],*argv[2]中的值

相信到这儿了你已经豁然开朗了吧

那么linux中呢?

linux操作系统中start命令

对于linux系统,不采用.exe这样的后缀来判断文件,而是直接根据内置类型进行判断。

想要在linux系统中使用exec()函数就需要用linux编译.cpp文件,然后用linux独有的命令去打开文件

安装模块

yum install gcc gcc-c++

使用命令

g++ test.cpp -o test

将已经编辑好了的.cpp文件编译为test文件

这时候会在/root目录下生成一个test文件,这个文件没有后缀,但是在linux内核下可以直接运行

./test ()  ()  ()

使用如上命令即可打开test程序并且传递括号中的参数

方法和windows中的一样

至此大功告成,你学会了吗

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值