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新建进程——父进程等待子进程结束的更多相关文章
- linux 进程学习笔记-等待子进程结束
<!--[if !supportLists]-->Ÿ <!--[endif]-->等待子进程结束 pid_t waitpid(pid_t pid, int *stat_loc, ...
- Linux下利用fork()创建子进程并使父进程等待子进程结束
int status; pid_t t = fork(); if(t){ waitpid(t, &status, 0); }else{ system("vi temp ...
- 父进程等待子进程结束 waitpid wait
我们一直在强调一个概念就是进程是一个程序执行的实例,是内核在虚拟概念下创建的实体,它实例化的体现在用户态就是程序代码和代码使用的变量(存储空间),在内核态就是内核为我们每个进程所保存的数据结构(状态信 ...
- Linux 进程--父进程查询子进程的退出状态
僵尸进程 当一个子进程先于父进程结束运行时,它与其父进程之间的关联还会保持到父进程也正常地结束运行,或者父进程调用了wait才告终止. 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它 ...
- Python多进程库multiprocessing创建进程以及进程池Pool类的使用
问题起因最近要将一个文本分割成好几个topic,每个topic设计一个regressor,各regressor是相互独立的,最后汇总所有topic的regressor得到总得预测结果.没错!类似bag ...
- 9-1进程,进程池和socketserver
一 进程: # 什么是进程 : 运行中的程序,计算机中最小的资源分配单位# 程序开始执行就会产生一个主进程# python中主进程里面启动一个进程 —— 子进程# 同时主进程也被称为父进程# 父子进程 ...
- shell命令管道未读完阻塞了子进程,与等待其结束的父进程死"锁"。
在exec执行一个子进程,我们希望使用管道取得子进程在重定向后的标准输出上的结果,同时等待子进程的结束.那么是等待子进程结束后才取管道数据,还是边取数据边等待子进程结束呢? 这里有一个调试的例子.u0 ...
- 用 set follow-fork-mode child即可。这是一个 gdb 命令,其目的是告诉 gdb 在目标应用调用fork之后接着调试子进程而不是父进程,因为在 Linux 中fork系统调用成功会返回两次,一次在父进程,一次在子进程
GDB的那些奇淫技巧 evilpan 收录于 Security 2020-09-13 约 5433 字 预计阅读 11 分钟 709 次阅读 gdb也用了好几年了,虽然称不上骨灰级玩家,但 ...
- 进程控制fork vfork,父子进程,vfork保证子进程先运行
主要函数: fork 用于创建一个新进程 exit 用于终止进程 exec 用于执行一个程序 wait 将父进程挂起,等待子进程结束 getpid 获取当前进程的进程ID nice 改变进程的优先级 ...
随机推荐
- openjudge-NOI 2.6-1775 采药
题目链接:http://noi.openjudge.cn/ch0206/1775/ 题解: 很经典的01背包问题,设时间为t,价值为v 一维压缩,状态转移方程fj=max(fj,fj-ti+vi) # ...
- 在ubuntu 上安装pycharm
1.首先在官网下载pycharm并进行提取,将提取的文件夹放在/usr下面(或者任意位置) 2.然后vi /etc/hosts 编辑 将0.0.0.0 account.jetbrains.com添加到 ...
- 一致性hash理解
在做memcached分布式集群时往往要用到一致性hash算法来调节缓存数据的分布. 通常的hash算法是以服务器数量N作为模数,使用key%N的值来获得最终位置,显然当服务器数量发生变化即N发生变化 ...
- Error -27796: Failed to connect to server "ip地址": [10060] Connection timed out
如果出现Error -27796: Failed to connect to server "ip地址": [10060] Connection timed out 这样的错误,如 ...
- selenium webdriver操作各浏览器
描述 本文主要是针对Chrome 62 , firefox57 ,和IE11 三个版本的操作.相关的driver .可点击以下链接.所有的driver 建议放在浏览器的目录下,本文中所有的driver ...
- linux下redis的安装与部署
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- JAVA(一)变量
public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" ...
- 洛谷 P2077 红绿灯 题解
题目传送门 这道题一秒一秒的扫描一定会超时,所以就用一种O(N)的算法. #include<bits/stdc++.h> using namespace std; ],b[],c[],x= ...
- jmeter-----如何安装插件管理?
1.下载插件管理jar文件,http://www.jmeter-plugins.org/wiki/PluginsManager/ 2. 拷贝这jar文件到 \lib\ext文件夹里 3. 重新打开JM ...
- PHP获取机器mac代码
废话不多话,直接上代码 <?php class GetMac { public $result = array(); public $macAddrs = array(); //所有mac地址 ...