fork新建进程
#include <sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
pid_t pid; //记录fork()的返回值,用于区别父子进程
char *Message; //用于记录输出信息
int LoopVal; //用于记录父子进程的循环次数
int LoopVal1; //用于循环
int ExitCode;
printf("the new fork starting\n");
pid=fork(); //新建子进程
switch(pid)
{
case -1: //建立进程错误
printf("creat new fork error!");
exit(1);
case 0: //子进程
Message = "This is in the child process";
LoopVal = 7;
ExitCode = 25;
break;
default: //父进程
Message = "This is in the parent process,waiting the child finished........";
LoopVal = 5;
ExitCode = 15;
break;
}
for(LoopVal1=0;LoopVal1<LoopVal;LoopVal1++)
{
puts(Message);
sleep(1);
}
if(pid!=0) //父进程
{
int StateVal;
pid_t ChildPid;
ChildPid = wait(&StateVal); //用StateVal记录状态信息,wait返回的是子进程退出时,子进程的进程id。
printf("The child has finished with the PID of %d\n",ChildPid);
if(WIFEXITED(StateVal)) //如果子进程正常结束,它就取一个非零值
{
//宏WEXITSTATUS(StateVal)是如果子进程正常结束,该宏函数的值为0,否则为非零值,与WIFEXITED(StateVal)刚好相反。
printf("the child process has exit with code %d\n",WEXITSTATUS(StateVal));
//如果WIFEXITED非零,它返回子进程的退出码
}
else
printf("the child has terminated abnormally\n");
} //子进程非正常结束
exit(ExitCode);
}
fork新建进程的更多相关文章
- fork新建进程——父进程等待子进程结束
#include <sys/types.h>#include<sys/wait.h>#include<unistd.h>#include<stdio.h> ...
- fork多线程进程时的坑(转)
add : 在fork多线程的进程时,创建的子进程只包含一个线程,该线程是调用fork函数的那个线程的副本.在man fork中,有The child process is created with ...
- linux的fork()函数-进程控制
进程作为构成系统的基本细胞,不仅是系统中独立活动的实体,而且是独立竞争资源的基本实体.它要经历创建.执行.等待.终止等一系列过程. 一.fork入门知识(转载) 一个进程,包括代码.数据和分配给进程的 ...
- linux中fork创建进程讲解(转)
大家知道Linux中创建子进程的一个很好的方法是函数调用fork,但是很多初学者对fork的理解上可能有点困难.我们举个例子来看看fork的用法吧. 大家用fork的时候记住fork是 ...
- inux的进程-进程的概念和fork创建进程
一. 什么是进程? 初学者,可能认为程序或者一段代码就是一个进程.其实这样说是很不全面的,进程简单的说就是一个个条件. 1.需要一个代码 2.需要运行这个代码环境和资源 从下面的一段代码,我们来分析 ...
- 【Linux 进程】fork父子进程间共享数据分析
之前我们通过fork()函数,得知了父子进程之间的存在着代码的拷贝,且父子进程都相互独立执行,那么父子进程是否共享同一段数据,即是否存在着数据共享.接下来我们就来分析分析父子进程是否存在着数据共享. ...
- 关于fork()父子进程返回值的问题
我们都知道,父进程fork()之后返回值为子进程的pid号,而子进程fork()之后的返回值为0.那么,现在就有一个问题了,子进程fork()的返回值是怎么来的?如果子进程又执行了一遍fork()函数 ...
- UNIX网络编程卷1 server程序设计范式1 并发server,为每一个客户请求fork一个进程
本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.传统并发server调用 fork 派生一个子进程来处理每一个客户 2.传统并发serv ...
- 越努力越幸运--2-LD_PRELOAD, fork ,僵尸进程
开始新的工作了,做了爸爸之后感觉一直都是浑浑噩噩,希望老婆和宝宝一直健康开心~ 最近遇到的问题很多啊,哈哈 1. 装环境时候,需要的glibc 版本不对,我把本地的软链接改了个别名(惯性思维),然后一 ...
随机推荐
- zoj 3640 Help Me Escape (概率dp 递归求期望)
题目链接 Help Me Escape Time Limit: 2 Seconds Memory Limit: 32768 KB Background If thou doest w ...
- POJ - 2955 Brackets括号匹配(区间dp)
Brackets We give the following inductive definition of a “regular brackets” sequence: the empty sequ ...
- java数据结构和算法08(B树的简单原理)
这一篇首先会说说前面剩余的一点知识2-3树,然后简单说说B树,不写代码,只是简单看看原理吧! 为什么要说一下2-3树呢?了解2-3树之后能更快的了解B树: 1.简单看看2-3树 其实我们学过了前面的2 ...
- cogs 2691. Sumdiv
2691. Sumdiv ★★★ 输入文件:sumdiv.in 输出文件:sumdiv.out 简单对比时间限制:1 s 内存限制:12 MB [题目描述] 考虑两个自然数A和B.定义 ...
- 洛谷P2289 [HNOI2004]邮递员(插头dp)
传送门 太神仙了……讲不来讲不来->这里 //minamoto #include<iostream> #include<cstdio> #include<cstri ...
- JS中substr与substring的区别
js中substr和substring都是截取字符串中子串,非常相近,可以有一个或两个参数. 语法:substr(start [,length]) 第一个字符的索引是0,start必选 length可 ...
- Photoshop CC 2014 for mac破解版
https://pan.baidu.com/s/1gfmTq8b 安装PS试用版后,打开Applications/Photoshop CC 2014文件夹下, 右键Photoshop CC 201 ...
- ]NET Core Lucene.net和PanGu分词实现全文检索
Lucene.net和PanGu分词实现全文检索 Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考 前言:目前自己在做使用Lucene. ...
- (转)Linux Network IO Model、Socket IO Model - select、poll、epoll
Linux Network IO Model.Socket IO Model - select.poll.epoll 原文:https://www.cnblogs.com/LittleHann/p/ ...
- Jexus~docker与它产生了暖味
前段时间写了很多docker for .net core的文章,用来快速部署微服务相当给力,而尝到了香头的我们希望把.net frameworks的程序也使用docker来部署一下,那么接下来我就结果 ...