linux 操作系统 创建多个子进程
来源:互联网 发布:ubuntu安装kali工具包 编辑:程序博客网 时间:2024/05/16 09:15
1、编写一段程序实现以下功能:
a) 使用系统调用fork()创建两个子进程
b) 各个子进程显示和输出一些提示信息和自己的进程标识符。
c) 父进程显示自己的进程ID和一些提示信息,然后调用waitpid()等待多个子进程结束,并在子进程结束后显示输出提示信息表示程序结束。
2、
创建两个子进程的代码如下:
#include <unistd.h>#include <stdarg.h>#include <time.h>#include <sys/types.h>#include <sys/wait.h>#include <stdio.h>#include <stdlib.h> int tprintf (const char *fnt,...); int main(void){ pid_tpid1,pid2; inti; printf("Hellofrom parent process,pid is %d.\n",getpid()); pid1=fork(); if(pid1==0) { sleep(1); for(i=0;i<3;i++) { tprintf("Hellofrom child NO.1 process %d. %d times\n",getpid(),i+1); sleep(1); } return0; } pid2=fork(); if(pid2==0) { sleep(1); for(i=0;i<3;i++) { tprintf("Hellofrom child NO.2 process %d. %dtimes\n",getpid(),i+1); sleep(1); } return0; } elseif(pid1!=-1) { tprintf("parentforked one child pross--%d.\n",pid1); tprintf("parentforked one child pross--%d.\n",pid2); tprintf("parentis waiting for child exit .\n"); waitpid(pid1,NULL,0); tprintf("childNO.1 process had exited .\n"); waitpid(pid2,NULL,0); tprintf("childNO.2 process had exited .\n"); tprintf("parentprocess had exited .\n"); } else { tprintf("every thing was done withouterror.\n");} return0;} int tprintf (const char *fnt,...){ va_listargs; structtm *tstruct; time_ttsec; tsec=time(NULL); tstruct=localtime(&tsec); printf("%02d:%02d:%02d:%5d|",tstruct->tm_hour,tstruct->tm_min,tstruct->tm_sec,getpid()); va_start(args,fnt); returnvprintf(fnt,args);}
程序使用fork()产生子进程,同时在子进程结束时return 0表示结束此子进程。这样就可以在父进程中继续创建子进程。
同理 多个子进程一样,多fork几次然后执行然后return0 出来。然后在父进程中waitpid(进程号,null,0)即可
0 0
- linux 操作系统 创建多个子进程
- Linux 创建多个子进程
- linux中创建多个子进程的方法
- linux中fork同时创建多个子进程的方法
- LINUX C:创建与监控多个子进程
- Fork同时创建多个子进程方法
- 创建N个子进程
- 进程控制:linux中fork同时创建多个子进程注意事项
- linux中fork同时创建多个子进程的方法(一)
- linux中fork同时创建多个子进程的方法(二)
- Linux中fork同时创建多个子进程的方法(二)
- linux中fork同时创建多个子进程的方法(一)
- 父进程创建多个子进程的问题
- 一个父进程创建多个子进程,有些需…
- 通过实例体会 fork()同时创建多个子进程
- fork同时创建多个子进程的方法
- linux下一次性fork多个子进程方法
- 用signal函数处理父进程创建的多个子进程,避免僵死进程的产生
- vb.net 教程 3-3 窗体编程 消息对话框
- Java基础进阶_day05_(异常)
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
- 这可能是webpack最实用的文章了。抓紧上车。(一)
- 输入三条边 a,b,c,判断是否能构成三角形,分别输出不能构成三角形、等边三角形、等腰三角形、直角三角形、一般三角形。
- linux 操作系统 创建多个子进程
- sqlserver2008中主要的系统表说明
- Python获取系统时间
- 更改Android AppCompatRadioButton控件的样式和颜色
- ThinkPHP5 连接MySql数据库问题
- 利用dex2jar和jd-gui反编译和查看Android的apk源码
- Centos7 上 用crontab 实现php计划任务
- Android 圆角边框对话框实现
- 第四章 4-1 文本的输出