Linux下进程的创建(system(); fork(); exec*())
2016-05-17 22:51
513 查看
0. system();
system()函数通过调用shell程序来执行所指向的命令(效率低),相当于先fork(),再execve();
特点:原进程和子进程各自运行,且原进程需要等子进程运行完后再继续;
1. fork();
参考文献: linux中fork同时创建多个子进程的方法(一)
在Linux中用fork()由一个父进程创建同时多个子进程的格式如下:
参考文献:进程控制:linux中fork同时创建多个子进程注意事项
2. exec*();
参考文献:
linux系统编程之进程(五):exec系列函数
Linux下execl学习
编译中出现的错误:
使用execl()函数时出现warning: not enough variables to fit a sentinel
解决方法 - 调整execl中的参数
system()函数通过调用shell程序来执行所指向的命令(效率低),相当于先fork(),再execve();
特点:原进程和子进程各自运行,且原进程需要等子进程运行完后再继续;
1. fork();
参考文献: linux中fork同时创建多个子进程的方法(一)
在Linux中用fork()由一个父进程创建同时多个子进程的格式如下:
int status,idx; for (idx = 0; idx < 10; idx++) { status = fork(); if (status == 0 || status == -1) break; // 每次循环时,如果发现是子进程就直接从创建子进程的循环中跳出来,不让你进入循环,这样就保证了每次只有父进程来做循环创建子进程的工作 } if (status == -1) { //error } else if (status == 0) { // 每个子进程都会执行的代码 //sub process } else { //parent process }
参考文献:进程控制:linux中fork同时创建多个子进程注意事项
/* 这里不可以一下就创建完子进程,要用 *要 创建-》判断-》使用-》return or exit.更不能这样如test2.c *childpid1 = fork(); *childpid2 = fork(); *childpid3 = fork(); */ childpid1 = fork(); //创建 if(0 == childpid1) //判断 { //进入 printf("In child1 process\n"); printf("\tchild pid = %d\n", getpid()); exit(EXIT_SUCCESS); //退出 }
2. exec*();
参考文献:
linux系统编程之进程(五):exec系列函数
Linux下execl学习
编译中出现的错误:
使用execl()函数时出现warning: not enough variables to fit a sentinel
解决方法 - 调整execl中的参数
相关文章推荐
- Linux使用lvresize扩展或缩减lv大小
- 内核态使用infiniband
- Linux 的cp命令
- C/C++/linux推荐读物
- 【Android 第三方SDK】breakpad在linux下编译
- linux中KVM桥接网卡br0
- 清除linux系统的多余引导
- sar命令详解
- 在 Linux 虚拟机中手动安装或升级 VMware Tools
- centos 安装 tmux
- .NET Core 1.0 CentOS7 尝试(二、VSCode安装)
- CentOS下安装google-chrome
- Linux 终端 使用
- linux 命令与权限
- 在CentOS 6.7上源码编译安装pycurl最新版7.43.0
- Linux-文件查找
- 总线设备驱动模型
- linux内核mmc读写分析
- Linux的inode的理解 [转]
- Linux的五个查找命令 [转]