Linux系统进程控制编程(四)——system系统调用
来源:互联网 发布:中国软件评测 编辑:程序博客网 时间:2024/04/30 14:15
zieckey (http://zieckey.cublog.cn)
system函数通过把system传递给/bin/sh -c 来执行 string 所指定的命令,string中可以包含选项和参数,
接着整个命令行(/bin/sh -c string)又传递给系统调用execve,如果没有找到/bin/sh,system返回127,
如果出现其他错误则返回-1,如果执行成功则返回string的代码。但是如果string为NULL,
system返回一个非0值,否则返回0。
#include <stdlib.h>
int system( const char* string );
请看下面的例子:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int retval;
retval = system( "ls -l -t" );
if ( 127 == retval )
{
fprintf( stderr, "/bin/sh not available\n" );
exit(127);
}
else if ( -1 == retval )
{
perror( "system" );
exit(EXIT_FAILURE);
}
else if ( 0 != retval )
{
fprintf( stderr, "command returned %d \n", retval );
perror( "ls" );
}
else
{
puts( "command successfully executed" );
}
return 0;
}
[root@localhost src]# gcc system.c
[root@localhost src]# ./a.out
总计 96
-rwxr-xr-x 1 root root 5539 09-30 00:55 a.out
-rwxr-xr-x 1 root root 443 09-30 00:55 system.c
-rwxr-xr-x 1 root root 480 09-30 00:13 execve.c
-rwxr-xr-x 1 root root 542 09-30 00:00 child_fork.c
-rwxr-xr-x 1 root root 1811 09-29 21:33 fork.c
-rwxr-xr-x 1 root root 162 09-29 18:54 getpid.c
command successfully executed
system函数通过把system传递给/bin/sh -c 来执行 string 所指定的命令,string中可以包含选项和参数,
接着整个命令行(/bin/sh -c string)又传递给系统调用execve,如果没有找到/bin/sh,system返回127,
如果出现其他错误则返回-1,如果执行成功则返回string的代码。但是如果string为NULL,
system返回一个非0值,否则返回0。
#include <stdlib.h>
int system( const char* string );
请看下面的例子:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int retval;
retval = system( "ls -l -t" );
if ( 127 == retval )
{
fprintf( stderr, "/bin/sh not available\n" );
exit(127);
}
else if ( -1 == retval )
{
perror( "system" );
exit(EXIT_FAILURE);
}
else if ( 0 != retval )
{
fprintf( stderr, "command returned %d \n", retval );
perror( "ls" );
}
else
{
puts( "command successfully executed" );
}
return 0;
}
[root@localhost src]# gcc system.c
[root@localhost src]# ./a.out
总计 96
-rwxr-xr-x 1 root root 5539 09-30 00:55 a.out
-rwxr-xr-x 1 root root 443 09-30 00:55 system.c
-rwxr-xr-x 1 root root 480 09-30 00:13 execve.c
-rwxr-xr-x 1 root root 542 09-30 00:00 child_fork.c
-rwxr-xr-x 1 root root 1811 09-29 21:33 fork.c
-rwxr-xr-x 1 root root 162 09-29 18:54 getpid.c
command successfully executed
- Linux系统进程控制编程(四)——system系统调用
- Linux系统进程控制编程---system系统调用
- Linux系统进程控制编程(二)——fork系统调用
- Linux系统进程控制编程(五)——popen函数调用
- Linux系统编程--进程控制(一)
- Linux系统进程控制编程---popen函数调用
- Linux系统编程(8)—— 进程之进程控制函数fork
- Linux系统编程(9)—— 进程之进程控制函数exec系列函数
- linux系统编程之进程(七):system()函数使用
- linux系统编程之进程(七):system()函数使用
- Linux系统编程——进程的控制:结束进程、等待进程结束
- Linux系统编程——进程的控制:结束进程、等待进程结束
- Linux系统编程——进程的控制:结束进程、等待进程结束
- Linux系统编程——进程的控制:结束进程、等待进程结束
- Linux系统编程——进程的控制:结束进程、等待进程结束
- Linux系统进程控制编程(三)——exec函数族的使用
- Linux系统进程控制编程(六)——wait和waitpid函数
- Linux系统进程控制编程(三)——exec函数族的使用
- Linux内存模型
- USACO Section 1.4 clocks - 好恶心的搜索题
- Linux系统进程控制编程(五)——popen函数调用
- 队内赛我出的一道题附标程、数据与解题报告
- 内存屏障——Memory barrier
- Linux系统进程控制编程(四)——system系统调用
- Visual Studio 2010下生成ACE静态库方法
- linux常用命令
- android小游戏:功夫蛇 开发经验总结(附apk安装包)
- Linux系统进程控制编程(三)——exec函数族的使用
- Linux系统进程控制编程(二)——fork系统调用
- popen函数详解
- 用GDB调试程序 - Ubuntu中文
- Linux/UNIX 命令行大全完整版