利用fork创建子进程
创建如图的进程:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<wait.h> int main()
{
int pid=fork();//创建子进程 if(pid==)
{ printf("D:%d\t %d\n",getppid(),getpid());return ;//子进程结束
} int pid2=fork();//创建子进程
if(pid2==)
{
printf("C:%d\t %d\n",getppid(),getpid());waitpid(pid2,NULL,);return ;//子进程结束
}
int pid3=fork();
if(pid3==)//创建子进程
{
printf("B:%d\t %d\n",getppid(),getpid());return ;//子进程结束 }
printf("父进程id 当前进程id\n");
printf("A:%d\t %d\n",getppid(),getpid());
waitpid(pid,NULL,);waitpid(pid2,NULL,);waitpid(pid3,NULL,);//等待子进程结束;
return ;
}
结果如下:
父进程id 当前进程id
A:
D:
C:
B:
创建如图的进程:
#include<stdio.h>
#include<unistd.h>
#include<wait.h>
#include<stdlib.h>
int main()
{ int pid=fork();int pid3;
if(pid==)
{
printf("C:%d\t %d\n",getppid(),getpid());return ;
}
int pid2=fork();
if(pid2==)
{
pid3=fork();
if (pid3==)
{
printf("D:%d\t %d\n",getppid(),getpid());return ;
}
else
{
printf("B:%d\t %d\n",getppid(),getpid());return ;
}
} printf("父进程id 当前进程id\n");
printf("A:%d\t %d\n",getppid(),getpid());
waitpid(pid,NULL,);waitpid(pid2,NULL,);waitpid(pid3,NULL,);
return ; }
结果如下:
父进程id 当前进程id
A:
C:
B:
D:
利用fork创建子进程的更多相关文章
- Linux下利用fork()创建子进程并使父进程等待子进程结束
int status; pid_t t = fork(); if(t){ waitpid(t, &status, 0); }else{ system("vi temp ...
- Linux fork创建子进程
1. pid_t fork(void); 功能:创建父子进程 参数:无 返回值:成功:在父进程中:返回值为子进程的PID 在子进程中:返回值为0 失败:-1 注意: 1)fork函数是用来创建进程的 ...
- 2.1 进程控制之fork创建子进程
fork()函数 目标:熟悉fork创建一个和多个子进程子线程 函数原型:pid_t fork(void); 返回值:成功返回:① 父进程返回子进程的ID(非负) ②子进程返回 0 : 失败返回-1. ...
- 线程_互斥锁_Lock及fork创建子进程
""" 创建锁 mutex = threading.Lock() 锁定 mutex.acquire([blocking]) 当blocking为True时,当前线程会阻塞 ...
- fork()创建子进程
fork()系统调用是Unix下以自身进程创建子进程的系统调用,一次调用,两次返回,如果返回是0,则是子进程,如果返回值>0,则是父进程(返回值是子进程的pid) 在fork()的调用处,整个父 ...
- Python 使用 os.fork() 创建子进程
Linux 操作系统提供了一个 fork() 函数用来创建子进程,这个函数很特殊,调用一次,返回两次,因为操作系统是将当前的进程(父进程)复制了一份(子进程),然后分别在父进程和子进程内返回.子进程永 ...
- exec族函数详解及循环创建子进程
前言:之前也知道exec族函数,但没有完全掌握,昨天又重新学习了一遍,基本完全掌握了,还有一些父子进程和循环创建子进程的问题,还要介绍一下环境变量,今天分享一下. 一.环境变量 先介绍下环境的概念和特 ...
- Nginx学习笔记(七) 创建子进程
Nginx创建子进程 ngx_start_worker_processes位于Nginx_process_cycle.c中,主要的工作是创建子进程. 在Nginx中,master进程和worker进程 ...
- [转载]Python模块学习 ---- subprocess 创建子进程
[转自]http://blog.sciencenet.cn/blog-600900-499638.html 最近,我们老大要我写一个守护者程序,对服务器进程进行守护.如果服务器不幸挂掉了,守护者能即时 ...
随机推荐
- 【Linux命令】Linux下的tar压缩解压缩命令详解(转)
tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个 ...
- Swift get和set方法以及只读属性(计算型属性,本身不保存数据,都是通过计算获得结果)
import UIKit class Person: NSObject { private var _name: String? var name: String? { get { return _n ...
- idea搭spring boot项目
Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程.它主要推崇的是'消灭配置’,实现零配置. 那么,如何在idea中创建一个spri ...
- Python-反射getattr的应用
login.py #!/usr/bin/dev python# coding:utf-8 def index(): print u'欢迎访问xx网站首页' def login(): print u'登 ...
- PHP 调试打印输出变量
var_dump ($row); echo "hello"; echo "\n"; print_r ($arr); php 数组 对象 $arr = json_ ...
- 非virtual函数,用指针进行upcast
void print_func(A* p) { p -> print(); } int main() { A a(); B b(,); //a.print(); //b.print(); pri ...
- 工程C++基础
大家好,我是老A.今天我们要学习的是工程C++,这是一个不可描述的东西.我主要讲的是template. template的用处是装逼,所以很重要. C++配备了函数模板和类模板.函数模板就是我们平时的 ...
- 438. Find All Anagrams in a String
原题: 438. Find All Anagrams in a String 解题: 两个步骤 1)就是从s中逐步截取p长度的字符串 2)将截取出的字符串和p进行比较,比较可以用排序,或者字典比较(这 ...
- SQL Server与MySQL在“存在则更新,不存在则插入”并发处理上的一些差异。
“存在则更新,不存在则插入的逻辑”并发情况下的处理 在sqlserver中: 在sqlserver中,是通过可序列化隔离级别+排它锁的方式来锁定一个范围来实现的当前锁定一个不存在的记录的时候,sqls ...
- Flask最强攻略 - 跟DragonFire学Flask - 第一篇 你好,我叫Flask
首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 一. Python 现阶段三大主流Web框 ...