博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
被调用的linux系统函数system的是如何实现的!
阅读量:2240 次
发布时间:2019-05-09

本文共 541 字,大约阅读时间需要 1 分钟。

用mysystem()函数来说明被调用的系统函数system是如何被实现出来的!其实是调用了linux里面的shell命令解释器来进行命令调用的,是通过fork()函数创建一个父进程和子进程,

然后在子进程中进程调用execl()来引入shell解释器,从而实现命令解析的功能!

下面请看代码吧

#include<stdio.h>

#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<string.h>
void mysystem(char *string);
int main()
{
 char *string;
 char str[1024];
 string=str;
 gets(string);
 mysystem(string); 
}
void mysystem(char *string)
{
 pid_t pid;
 pid=fork();
 if(-1==pid)
 {
  printf("error!\n");
 }
 else if (pid==0) 
 { 
  execl("/bin/sh","sh","-c",string,NULL);
  exit(1);
 }
 else
 {
  exit(1);
 }
}

转载地址:http://oaqbb.baihongyu.com/

你可能感兴趣的文章
MyBatis分页插件PageHelper的使用
查看>>
【MyBatis学习01】宏观上把握MyBatis框架
查看>>
【MyBatis学习02】走进MyBatis的世界
查看>>
【MyBatis学习03】原始dao开发方法及其弊端
查看>>
【MyBatis学习04】mapper代理方法开发dao
查看>>
【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
查看>>
【MyBatis学习06】输入映射和输出映射
查看>>
【MyBatis学习07】动态sql
查看>>
【MyBatis学习08】高级映射之一对一查询
查看>>
【MyBatis学习09】高级映射之一对多查询
查看>>
【MyBatis学习10】高级映射之多对多查询
查看>>
【MyBatis学习11】MyBatis中的延迟加载
查看>>
【MyBatis学习12】MyBatis中的一级缓存
查看>>
【MyBatis学习13】MyBatis中的二级缓存
查看>>
【MyBatis学习14】MyBatis和Spring整合
查看>>
【MyBatis学习15】MyBatis的逆向工程生成代码
查看>>
Java 中 final、finally 和 finalize 使用总结
查看>>
volatile关键字解析
查看>>
单例模式的八种写法比较
查看>>
比较常见的数据库SQL面试题以及答案
查看>>