system中的命令没有c 执行 system 命令,为什么

system函数一些常用的命令_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
system函数一些常用的命令
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 103, 距离下一级还需 97 积分
论坛徽章:0
system( &svc -d /service/qmail& );
system( &svc -t&&/service/qmail& );
system( &svc -u /service/qmail& );
后,没有生效,命令没有执行。
但是直接敲这三个命令是生效的。为什么呢?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
论坛徽章:1
system()中的命令没有执行,为什么?
是什么? 是否是路径的问题?
白手起家, 积分 103, 距离下一级还需 97 积分
论坛徽章:0
system()中的命令没有执行,为什么?
svc是一个用来启动 /service下的服务的程序,我用绝对路径也试过,还是不行。
家境小康, 积分 1488, 距离下一级还需 512 积分
论坛徽章:0
system()中的命令没有执行,为什么?
试试用exec*&&, 具体用法man 3 exec
家境小康, 积分 1147, 距离下一级还需 853 积分
论坛徽章:0
system()中的命令没有执行,为什么?
Do not use system() from a program with set-UID or set-GID privileges, because strange values&&for&&some
& && & environment&&variables&&might&&be used to subvert system integrity.&&Use the exec(3) family of functions
& && & instead, but not execlp(3) or execvp(3).&&system() will not, in fact, work properly from&&programs&&with
& && & set-UID&&or&&set-GID privileges on systems on which /bin/sh is bash version 2, since bash 2 drops privi-
& && & leges on startup.&&(Debian uses a modified bash which does not do this when invoked as sh.)
白手起家, 积分 12, 距离下一级还需 188 积分
论坛徽章:0
system()中的命令没有执行,为什么?
别弄英文啊.翻译一下
家境小康, 积分 1067, 距离下一级还需 933 积分
论坛徽章:0
system()中的命令没有执行,为什么?
单眼皮的猪
白手起家, 积分 12, 距离下一级还需 188 积分
论坛徽章:0
system()中的命令没有执行,为什么?
[quote]原帖由 &luojiannx&] 单眼皮的猪 [/quote 发表:
家境小康, 积分 1067, 距离下一级还需 933 积分
论坛徽章:0
system()中的命令没有执行,为什么?
双眼皮的那个呢?
白手起家, 积分 12, 距离下一级还需 188 积分
论坛徽章:0
system()中的命令没有执行,为什么?
我 去做手术就变 双眼皮的猪了.
就差在眼皮上.你给解释一下那英文吧.2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。关于php的system函数执行cmd的权限问题!!!!_php吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:138,543贴子:
关于php的system函数执行cmd的权限问题!!!!收藏
本来想写个php网页远程就能关闭计算机,就调用system函数执行命令文件;执行以下文件的时候:&?phpsystem('ping ',$out);echo "$out";?&可以正常输出,如下:执行:&?phpsystem('shutdown -s -t 20',$out);echo "$out";?&的时候,电脑没反应,不关机,是怎么回事??网页输出结果为:1,如下图有人说是因为:apache需要有windows/system/cmd.exe执行权限,可是我应该有啊!本人:win7+php5+apache怎么回事嘛!!!!(不要问我为什么要远程关机,也不要问我为什么不装什么网灵客户端)
小黑盒—绝地求生 战绩查询
不能沉!!!!!!!!!!!!!!!!!!!!!!
不能沉!!!!!!!!!!!!!!!!!!!!!!
不能沉!!!!!!!!!!!!!!!!!!!!!!
你在cmd里输入一下看cmd显示的结果就知道了
前来为你顶贴
我觉得你应该是没有root用户权限,apache应该是以nobady(英文不好,忘了是不是这个单词了)用户的身份登陆,所以你是关不了机器的
你可以试试system('su - |instd(这里单词也忘了,自己查吧) password(password是你root用户密码)‘,$out);
sorry,没看你是windows,那应该给权限应该可以执行,主要还是权限的问题,只有管理员才能执行关机
大皇帝页游新区入口,三国SLG战争页游,点击领取礼包,新服送首冲高返利!
用exec试试
在apache里设置用户名为管理员试试
执行一下whoami就知道自己是什么权限了
上面写不下了,新开一个楼层吧 windows+r(就是XP的开始-&运行)
输入 Gpedit.msc 回车计算机配置=》windows设置=》安全设置=》本地策略=》用户权限分配在右边的策略列表里双击 从远程系统强制关机弹出的窗口里点击 添加用户或组在下边输入system点击检查名称然后确定然后各种应用,各种确定,关闭。然后再试一下。。。觉得应该就可以了,如果还是不行可以尝试重启一下看看。不能保证肯定管用,你就试一下先吧,我也用php执行过重启命令(win2k3下,system权限),都是成功的,没遇到过你的这种情况,可能是server和PC有区别?不是很清楚。
everyone所有权限
人道主义支持下
不能沉!!!!!!!!!!!!!!!!!!!!!!
我也遇到和楼主一样的问题,想请教一下楼主现在解决了吗?
是管理员身份运行?
楼主 我也遇到了这种问题我也是打死返回1同样的代码在cmd里面就可以使用,你解决没得?
登录百度帐号推荐应用中国领先的IT技术网站
51CTO旗下网站
Linux system函数的正确应用和异常处理
Linux系统中的system函数作为Linux应用开发工程师来说是一个非常方便的调用shell脚本的方法,但是不理解system函数本身的调用机制,不进行相应的出错处理,很容易造成程序的异常和bug。
作者:Alex来源:| 13:01
Linux系统中的system函数作为Linux应用开发工程师来说是一个非常方便的调用shell脚本的方法,但是不理解system函数本身的调用机制,不进行相应的出错处理,很容易造成程序的异常和bug。
一、system()理解
功能:system()函数调用&/bin/sh -c command&执行特定的命令,阻塞当前进程直到command命令执行完毕
int system(const char *command);
如果无法启动shell运行命令,system将返回127;出现不能执行system调用的其他错误时返回-1。如果system能够顺利执行,返回那个命令的退出码。
& & &#include &stdlib.h&
& & &int system(const char *command);
DESCRIPTION
& & &system() &executes a command specified in command by calling /bin/sh -c&
& & & &command, and returns after the command has been completed. &During exe-
& & &cution &of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT
& & &will be ignored.
RETURN VALUE
& & &The value returned is -1 on &error &(e.g. & fork(2) &failed), &and &the
& & &return &status &of the command otherwise. &This latter return status is
& & &in the format specified in wait(2). &Thus, the exit code of the command
& & &will &be &WEXITSTATUS(status). & In case /bin/sh could not be executed,
& & &the exit status will be that of a command that does exit(127).
& & &If the value of command is NULL, system() returns non-zero if the shell
& & &is available, and zero if not.
& & &system() does not affect the wait status of any other children.
二、system()函数原理
system函数执行时,会调用fork、execve、waitpid等函数。
Linux版system函数的源码:
int&system(const&char&*&cmdstring)&&{&&&&&&pid_t&&&&&&&int&&&&&&&if(cmdstring&==&NULL){&&&&&&&&&&&&&&&&&&&return&(1);&&&&&&}&&&&&&if((pid&=&fork())){&&&&&&&&&&&&&&status&=&-1;&&&&&&}&&&&&&else&if(pid&==&0){&&&&&&&&&&execl(&/bin/sh&,&&sh&,&&-c&,&cmdstring,&(char&*)0);&&&&&&&&&&_exit(127);&//子进程正常执行则不会执行此语句&&&&&&&&&}&&&&&&else{&&&&&&&&&&&&&&while(waitpid(pid,&&status,&0)&&){&&&&&&&&&&&&&&&&&&if(errno&!=&EINTER){&&&&&&&&&&&&&&&&&&&&&&status&=&-1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&&&&&return&&&}&
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命&令执行完后随即返回原调用的进程。
在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。
=-1:出现错误
=0:调用成功但是没有出现子进程
&0:成功退出的子进程的id
如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值&。如果system()调用成功则最后会返回
执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。
在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。
system函数对返回值的处理,涉及3个阶段:
阶段1:创建子进程等准备工作。如果失败,返回-1。
阶段2:调用/bin/sh拉起shell脚本,如果拉起失败或者shell未正常执行结束(参见备注1),原因值被写入到status的低8~15比特位中。system的man中只说明了会写了127这个值,但实测发现还会写126等值。
阶段3:如果shell脚本正常执行结束,将shell返回值填到status的低8~15比特位中。
只要能够调用到/bin/sh,并且执行shell过程中没有被其他信号异常中断,都算正常结束。
比如:不管shell脚本中返回什么原因值,是0还是非0,都算正常执行结束。即使shell脚本不存在或没有执行权限,也都算正常执行结束。
如果shell脚本执行过程中被强制kill掉等情况则算异常结束。
如何判断阶段2中,shell脚本子进程是否正常执行结束呢?系统提供了宏:WIFEXITED(status)。如果WIFEXITED(status)为真,则说明正常结束。
如何取得阶段3中的shell返回值?你可以直接通过右移8bit来实现,但安全的做法是使用系统提供的宏:WEXITSTATUS(status)。
由于我们一般在shell脚本中会通过返回值判断本脚本是否正常执行,如果成功返回0,失败返回正数。
所以综上,判断一个system函数调用shell脚本是否正常结束的方法应该是如下3个条件同时成立:
(1)-1 != status
(2)WIFEXITED(status)为真
(3)0 == WEXITSTATUS(status)
根据以上分析,当shell脚本不存在、没有执行权限等场景下时,以上前2个条件仍会成立,此时WEXITSTATUS(status)为127,126等数值。
所以,我们在shell脚本中不能将127,126等数值定义为返回值,否则无法区分中是shell的返回值,还是调用shell脚本异常的原因值。shell脚本中的返回值最好多1开始递增。
示例程序:
#include&&#include&&#include&&&#define&EXIT_ERR(m)&\&do\&{\&&&&&perror(m);\&&&&&exit(EXIT_FAILURE);\&}\&while&(0);\&&&int&main(void)&{&&&&&int&status&;&&&&&status&=&system(&ls&-l|wc&-l&);&&&&&&&if(status&==&-1){&&&&&&&&&EXIT_ERR(&system&error&);&&&&&}&&&&&&&else{&&&&&&&&&if(WIFEXITED(status))&&&&&&&&&{&&&&&&&&&&&&&if(WEXITSTATUS(status)&==&0)&&&&&&&&&&&&&&&&&printf(&run&command&successful\n&);&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&&printf(&run&command&fail&and&exit&code&is&%d\n&,WEXITSTATUS(status));&&&&&&&&&}&&&&&&&&&else&&&&&&&&&&&&&printf(&exit&status&=&%d\n&,WEXITSTATUS(status));&&&&&}&&&&&return&0;&}&
运行结果:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
原创调查原创热点头条
24H热文一周话题本月最赞
讲师:91676人学习过
讲师:207692人学习过
讲师:125359人学习过
精选博文论坛热帖下载排行
本书全面、深入地介绍了网络应用技术,主要内容包括:RMS权限管理服务、Exchange邮件服务、LCS即时消息服务、WSUS系统更新服务、Symantec网...
订阅51CTO邮刊}

我要回帖

更多关于 c 执行 system 命令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信