博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fork+execve
阅读量:3704 次
发布时间:2019-05-21

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

传智扫地僧课程学习笔记。

vfork有个限制,子进程必须立刻执行_exit或者exec函数,否则程序就会挂掉,

fork子进程拷贝父进程的数据段

 Vfork子进程与父进程共享数据段;

Vfork和exec函数族在一起

execve替换进程映像(加载程序)注意execve是一个系统调用;

替换意味着:代码段、数据段、堆栈段、进程控制块PCB全部替换,

#include 
#include
#include
#include
#include
#include
#include
#include
/*{ "aaaa", "bbbb" null 0 \0 }*/int main01(void ){ pid_t pid; int ret = 0; printf("befor fork pid:%d \n", getpid()); int abc = 10; pid = vfork(); //errno if (pid == -1) { //printf("pid < 0 err.\n"); perror("tile"); return -1; } if (pid > 0) { printf("parent: pid:%d \n", getpid()); } else if (pid == 0) { printf("child: %d, parent: %d \n", getpid(), getppid()); //printf("abc:%d\n", abc); //把自己写应用程序启动起来 // ret = execve("./hello", NULL, NULL); if (ret == -1) { perror("execve:"); } printf("execve 测试有没有执行\n"); exit(0); } printf("fork after....\n"); return 0;}int main(void ){ pid_t pid; int ret = 0; printf("befor fork pid:%d \n", getpid()); int abc = 10; pid = vfork(); //errno if (pid == -1) { //printf("pid < 0 err.\n"); perror("tile"); return -1; } if (pid > 0) { printf("parent: pid:%d \n", getpid()); } else if (pid == 0) { printf("child: %d, parent: %d \n", getpid(), getppid()); //printf("abc:%d\n", abc); //把自己写应用程序启动起来 //通过一个应用程序执行命令 char *const argv[] = {"ls", "-l", NULL}; ret = execve("/bin/ls", argv, NULL); if (ret == -1) { perror("execve:"); } printf("execve 测试有没有执行\n"); exit(0); } //printf("fork after....\n"); return 0;}

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

你可能感兴趣的文章
grafana-server页面配置
查看>>
入坑Golang——变量
查看>>
入坑Golang —— 数据类型的基本介绍
查看>>
Golang 基本数据类型和string的转换
查看>>
Golang指针用法
查看>>
Golang 水仙花数与乘法表
查看>>
python自动检测更新业务脚本
查看>>
inotify+rsync实现实时同步
查看>>
python导入自定的py文件
查看>>
docker快速部署openVpn
查看>>
go 语言 proxy.golang.org timeout 无法访问 处理方法
查看>>
网络数据采集技术---好书推荐
查看>>
ubuntu utp服务搭建教程
查看>>
最近学mybatis
查看>>
FileInputStream (系统找不到指定的文件。)
查看>>
经典JavaEE企业应用实战 光盘 -非度盘
查看>>
2021-06-29
查看>>
学习springboot静态资源
查看>>
无效的标记: --release maven
查看>>
Unable to perform unmarshalling at -------hibernate出错
查看>>