Linux系统进程控制编程(四)——system系统调用
2011-11-13 03:55
537 查看
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系统进程控制编程---popen函数调用
- Linux系统进程控制编程(五)——popen函数调用
- Linux系统进程控制编程(二)——fork系统调用
- linux系统编程:进程控制(fork)
- Linux系统编程--进程控制 (三)
- linux进程控制-exec系列 exec系统调用
- unix环境多进程编程----用到的32个系统调用祥解
- Linux系统进程控制编程(一)————基本概念和函数getpid的使用
- [linux系统编程]System V IPC 信号量做进程间互斥
- Linux系统编程--进程控制 (二)
- linux系统编程之进程(七):system()函数使用
- 九、Linux系统编程-进程(二)fork系统调用、复制进程映像、写时复制、孤儿进程和僵尸进程
- Linux学习记录--进程控制相关系统调用
- Unix高级编程:malloc内存管理、缓冲机制、mmap内存映射到进程、系统调用文件操作
- unix环境多进程编程----用到的32个系统调用详解
- Linux系统进程控制编程(三)——exec函数族的使用
- Linux下C编程,进程通信之标准流管道通信(即系统调用)
- 进程控制天字第1号系统调用——fork
- LinuxC系统编程——进程控制(1)