system()函数
来源:互联网 发布:沈天津seo诊断 编辑:程序博客网 时间:2024/05/22 13:02
【参开来源:http://bbs.chinaunix.net/thread-1036090-1-1.html】
函数原形是:
int system(const char *command)
如果command被执行了,那么system的返回值就是command执行后的返回值,但是只有低8位返回了。如果想得到那个返回值可以调用WEXITSTATUS(status),其中status是system函数的返回值。
例如:
#include<stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(int argc,char **argv)
{
const char* cmd ="exit -111";
int status =system(cmd);
printf("Returned code(WEXITSTATUS(status)):[%d]\n", WEXITSTATUS(status));
printf("Returned code(status>>8):[%d]\n", status>>8);
printf("Returned code(status):[%d]\n", status);
}
-111 只有低8位返回了,那么返回值是-111 + 256 = 145
我是在AIX操作系统下进行编译、运行的:
结果如下:
Return code(WEXITSTATUS(status)):[145]
Return code(status>>8):[145]
Return code(status):[37120]
不可以依赖低八位这个思路,除非不考虑移植性。建议使用提供的宏(在<sys/wait.h>)有
1、WIFEXITED(stat) 其中stat是waitpid()的返回值 非零 如果子程序正常退出
2、WEXITSTATUS(stat) 子程序返回exit 值
3、WIFSIGNALED(stat) 非零 如果子进程被一个信号结束
4、WTERMSIG(stat) signal number that terminated child
5、WIFSTOPPED(stat) 非零 如果子进程被停止
6、WSTOPSIG(stat) 停止子进程的signal number.
7、WIFCONTINUED(stat) 非零 如果状态是继续运行的子进程
8、WCOREDUMP(stat) 如果WIFSIGNALED(stat)非零,而且进程产生了一个core dump,那么这个也是非零。
还有其他,请参考http://pubs.opengroup.org/onlinepubs/007904975/basedefs/sys/wait.h.html
- system函数
- System函数
- system()函数
- system函数
- system ()函数
- system()函数
- system()函数
- system()函数
- system()函数
- system函数
- system()函数
- system()函数
- system() 函数
- system()函数
- system函数
- system()函数
- system函数
- System函数
- Android Activity生命周期详解
- 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹出菜单
- Groovy
- android权限大全
- 【Makefile】如何写Android.mk(整理)
- system()函数
- smarty常用方法
- JQuery的KinSlideshow插件打造超炫焦点轮播图,带参数说明
- ZOJ 4257--Most Powerful(状压dp)
- Android通过共享用户ID来实现多个Activity进程共享
- 进程同步与异步的概念
- 列表_下拉列表_可扩展的列表_滚动_画廊_图像切换_网格_标签_惰性装载
- 十一、从头到尾彻底解析Hash表算法
- Forefront Identity Manager 2010高效身份管理 (02): Forefront Identity Manager 2010 安装过程概述(上)