PHP允许输入负数,php exec在linux中返回值不能为负数

php exec在linux中返回值不能为负数有需要的朋友可参考一下。

我们先来了解一下关于exec函数的使用方法

exec()

原型:

 代码如下复制代码
string exec (string command [, string array [, int return_var]])

exec ()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。

例子:

 代码如下复制代码
exec("/bin/ls -l");

exec("/bin/ls -l", $res);

exec("/bin/ls -l", $res, $rc);

第三个参数, 怎么不能接收负数??

这里的&$return_var就是程序返回值,起初我的回答是可以为负数。

一般在C语言里我们会这样写

 代码如下复制代码
#include

#include

int main()

{

printf("^_^n");

return -5;

}

这个-5就是返回值,但习惯上是写成0或者1的。

注意:很多人的C代码里把main函数写成 void main() 这样实际上是不对的,详细的就不说了。

把上面的代码编译后,到CMD下运行,然后就能看到输出结果了。接着,输入“echo %ERRORLEVEL%”,回车,就可以看到程序的返回值了。这个%ERRORLEVEL%就代表了程序的返回状态。在WIN下确实是可以为负数的

,php调用也是正常的。

 代码如下复制代码
E:devphp535>php -r "exec('return.exe',$out,$a);var_dump($a);"

int(-2)

但是到了linux下,始终为正数,刚开始怀疑是权限问题,用了chmod x后,排除了权限问题。

 代码如下复制代码
exec("/home/wwwroot/test/rtest.out 2>&1",$out,$a);

var_dump($out,$a);

array(1) { [0]=> string(3) "^_^" } int(251)

看起来成了256 return val,可以看到实际上返回了负数,只不过被转换成正数了。

接着看了下standard/exec.c里的源代码,没发现啥端倪,干到很奇怪,突然想到自己忘了一步。忘了看程序返回给OS的值了.

可以使用echo $? 显示最后命令的推出状况。

 代码如下复制代码
-bash-3.00$ vi main.c

-bash-3.00$ gcc -o ./mm main.c

-bash-3.00$ ll

total 48

drwxr-xr-x  3 www www 4096 May  4  2011 2011

drwxr-xr-x  6 www www 4096 Jun 23  2011 eoc

-rwxr-xr-x  1 www www 7131 Feb  1 12:47 hello

-rw-r--r--  1 www www    3 Feb  1 12:51 hello.c

-rw-r--r--  1 www www   99 Feb  1 12:50 main.c

-rwxr-xr-x  1 www www 4714 Feb  1 12:51 mm

drwxr-xr-x  3 www www 4096 Jun 24  2011 test

-bash-3.00$ ./mm

^_^

-bash-3.00$ echo $?

251

-bash-3.00$

这样就可以看看exec返换给OS的值是多少。

在linux下,这个返回值就是无符号类型,返回的是一个正数,所以传给php也是正数了,php实际上也是调用的exec所返回的值。

OUT了,也许linux就是这么规定的,程序中泰返回值为1~255区间,而自己不清楚这个规则。不过还没有确定是否linux里就是这么规定的。虽然问题很蛋疼,意义不大,不过也可以在这里留给遇到类似问题的人参考。不过到这里也没深究的必要了。谁要是真想彻底搞清楚,可以看看shell这块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自我祝贺

博客火了这么久,微博火了这么久。这段时间总感觉自己要做点什么。从04年伊始的马上有钱,到04年结束的马拉个币。我终于觉得,想要和大家一起分享,我这马年的苦逼的工作。第一篇博客想了好久,该写点什么,应该…

LeetCode 1798. 你能构造出连续值的最大数目

文章目录1. 题目2. 解题1. 题目 给你一个长度为 n 的整数数组 coins ,它代表你拥有的 n 个硬币。 第 i 个硬币的值为 coins[i] 。如果你从这些硬币中选出一部分硬币,它们的和为 x ,那么称,你可以 构造 出 x 。 请返回从 0 开始&…

分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构与算法学习笔记:图...

图:图结构区别于线性结构和树型结构,区别可见下图逻辑上的图(graph)结构由顶点(vertex)和边(edge)组成。一个图结构G包含顶点集合V和边集合E,任何两个顶点之间可以有一个边表示两者的关系。对于一个存在的G,V不可以为空集&#xf…

人类附身机器人获得永生_脑机接口先驱尼古莱利斯:人类无法实现数字永生

科幻作品中的意念控制、心灵感应,甚至数字“永生”,会通过脑机接口技术得以实现吗?脑机接口技术先驱者之一、杜克大学神经工程学教授米格尔尼古莱利斯(Miguel Nicolelis)表示,不可能。近日,尼古莱利斯在巴西家中与北京…

linux内核分成如下五个子系统,linux内核主要由5个子系统 Linux内核由哪几个子系统组成?...

1, Linux内核由哪几个子系统组成?Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时&…

HDU 1213 How Many Tables【并查集】

解题思路:和畅通工程类似,问最后还剩下几个不连通的区域。 How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15086 Accepted Submission(s): 7364 Problem Description…

LeetCode 1799. N 次操作后的最大分数和(回溯 / 状态压缩DP)

文章目录1. 题目2. 解题2.1 错误解2.2 回溯超时解2.3 回溯通过2.4 状态压缩DP1. 题目 给你 nums ,它是一个大小为 2 * n 的正整数数组。 你必须对这个数组执行 n 次操作。 在第 i 次操作时(操作编号从 1 开始),你需要&#xff1…

pytorch argmax_轻松学Pytorch使用ResNet50实现图像分类

点击上方蓝字关注我们微信公众号:OpenCV学堂关注获取更多计算机视觉与深度学习知识Hello大家好,这篇文章给大家详细介绍一下pytorch中最重要的组件torchvision,它包含了常见的数据集、模型架构与预训练模型权重文件、常见图像变换、计算机视觉…

linux查看某进程cpu使用情况,linux中如何查看进程对应的cpu使用情况?

empty与isset的一点使用体会刚在做表单提交的时候,我想检验一下数据是否存在,并用var_dump函数看一下数据.首先看使用isset()的代码 //登录函数 function login(){ if(!isset($_POST) ...ASPxTreeList控件去根节点的新增修改操作(写在onCommandColumnButtonInitialize&lpar…

如何通过PHP将excel的数据导入MySQL中

在开发PHP程序时,很多时候我们会有将数据批量导入数据库的需求,如学生信息批量添加到数据库中,而事先用excel编排好,对excel实行操作,便是我们比较常用的选择方式。 在对excel的操作中,phpExcelReade便是很…

LeetCode 1800. 最大升序子数组和

文章目录1. 题目2. 解题1. 题目 给你一个正整数组成的数组 nums &#xff0c;返回 nums 中一个 升序 子数组的最大可能元素和。 子数组是数组中的一个连续数字序列。 已知子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;若对所有 i&#xff08;l < i < r&a…

html使用js的变量_2、温故而知新,再学一遍JavaScript-html中如何使用JS

温故而知新&#xff0c;再学一遍JavaScripthtml中使用JavaScript有两种方式&#xff1a;通过中使用src属性引入外部JS文件,同时又在其内部嵌入JavaScript 代码&#xff0c;则嵌入的代码会被忽略。关于”字符串当浏览器遇到字符串""时就会认为代码块已经结束&#xff…

修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣

​PostgreSQL 在9.2 之前是要面临一个指责&#xff0c;就是在更改字段类型的时候带来的不堪&#xff0c;假象你有100万行的数据&#xff0c;其中一个字段是varchar(20) ,你想将其更改为 varhcar(30), 这可能就要造成一个灾难&#xff0c;熟悉postgresql 原理的人们&#xff0c;…

用户 'IIS APPPOOL\***' 登录失败(转载)

用户 IIS APPPOOL\DefaultAppPool 登录失败。 我在windows8中安装了iis之后添加了我做的网站打开之后提示用户 IIS APPPOOL\DefaultAppPool 登录失败。 我再vs2010中能正常运行 最佳答案 这是设置iis应用程序池的设置问题。我就遇到了这样的问题。 比如我的网站取名myweb…

完全相同的4个小矩形如图所示放置_吸睛!矩形在PPT中的创意表现

如何在PPT中表现出光效来&#xff1f;这是很多人在制作PPT时都可能会面临的问题&#xff0c;大多数人的常规做法就是在许多素材网站中直接寻找&#xff0c;比如在花瓣中直接搜索"光效"&#xff0c;我们可以得到以下结果&#xff1a;这些光效PNG文件可以直接用在我们的…

LeetCode 1801. 积压订单中的订单总数(map)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 orders &#xff0c;其中每个 orders[i] [pricei, amounti, orderTypei] 表示有 amounti 笔类型为 orderTypei 、价格为 pricei 的订单。 订单类型 orderTypei 可以分为两种&#xff1a; 0 表示这是一批采购订单 buy1 …

quantaxis 云服务器_量化金融策略开源框架:QUANTAXIS

简介&#xff1a; QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案&#xff0c;是一个从数据爬取、清洗存储、分析回测、可视化、交易复盘的本地一站式解决方案。QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案&#xff0c;是一…

linux 中文 音乐播放器,linux下的常见音乐播放器

xmms老牌的音乐播放器&#xff0c;模仿Windows下*的播放器Winamp&#xff0c;其强大的功能不输于Winamp&#xff0c;具有极强的可扩展性&#xff0c;支持mp3、ogg、wav等格式播放&#xff0c;添加插件后还可以播放AAC、wma等格式。缺点&#xff1a;没有曲库功能&#xff0c;不支…

listrecord根据某个属性去重_去哪网开发实战记录(9):城市选择页(中)

兄弟组件之间的联动所谓的兄弟组件之间的联动&#xff0c;其实就是实现点击右侧的字母就能跳转至对应的首字母城市&#xff0c;因此列表组件需要知道右侧的字母列表的点击事件所对应的元素字母&#xff0c;这就需要兄弟组件间的数据传递了(Alphabet组件与List组件之间的通信)&a…

Windows Store App 获取文件及文件夹列表

通过使用13.2.1小节给出的方法和属性&#xff0c;不仅可以对用户库中的文件和文件夹进行操作&#xff0c;还可以获取其中所有的文件或者文件夹&#xff0c;比如为了完整地展现整个音乐库&#xff0c;可以获取并列举出音乐库中所有的音乐文件&#xff0c;以便能够在应用程序中浏…