进程通信
来源:互联网 发布:剑三喵脸数据 编辑:程序博客网 时间:2024/06/15 19:24
#include "conio.h" #include "stdio.h"#include "stdlib.h" struct jincheng_type { int pid; int youxian; int daxiao; int msg; int live; }; struct jincheng_type neicun[20],waicun[20]; int shumu=0,pid_l; main() { int n,m,i; char a; n=1; while(n==1) {system("cls");printf("\n********************************************");printf("\n* 进程演示系统 *");printf("\n********************************************");printf("\n 1.创建新的进程 2.查看运行进程 ");printf("\n 3.换出某个进程 4.杀死运行进程 ");printf("\n 5.进程之间通信 6.退出 ");printf("\n********************************************");printf("\n请选择(1~6) ");a=getch(); switch(a){ case'1': create( ); break; case'2': viewrun( ); break; case'3': huanchu(); break; case'4': kill( ); break; case'5': tongxun( ); break; case'6': exit(0); default: n=0; } } } create( ) /* 创建一个进程的示例(不完整的程序) */{ if(shumu>=20) { printf("\n内存已满,请先结束或换出进程\n"); } else { printf("\n请输入新进程的pid\n"); scanf("%d",&neicun[shumu+1].pid); printf("\n请输入新进程的优先级\n"); scanf("%d",&neicun[shumu+1].youxian); printf("\n请输入新进程的大小\n"); scanf("%d",&neicun[shumu+1].daxiao); printf("\n请输入新进程的消息\n"); scanf("%d",&neicun[shumu+1].msg); neicun[shumu+1].live=1; shumu++; } return neicun[shumu-1].live;} viewrun( )/*查看运行进程*/ { int vpid; printf("\n请输入进程的pid\n"); scanf("%d",&vpid); if(vpid>0&&vpid<=20&&neicun[vpid].live==1) { printf("\n进程的pid是: %d\n",neicun[vpid].pid);printf("进程的优先级是: %d\n",neicun[vpid].youxian);printf("进程的大小是:%d\n",neicun[vpid].daxiao);printf("进程的消息是:%d\n",neicun[vpid].msg); } else {printf("\n所查看运行进程不存在\n"); } printf("请按回车退出查看\n"); vpid=getch(); } huanchu()/*换出某个进程*/ { int pid1,pid2; char c; printf("\n请输入第一个替换进程的pid\n"); scanf("%d",&pid1); printf("\n请输入第二个替换进程的pid\n"); scanf("%d",&pid2); if(pid1>0&&pid1<=20&&neicun[pid1].live==1) { if(neicun[pid1].youxian>neicun[pid2].youxian) { waicun[20].pid=neicun[pid1].pid; waicun[20].youxian=neicun[pid1].youxian; waicun[20].daxiao=neicun[pid1].daxiao; waicun[20].msg=neicun[pid1].msg; neicun[pid1].pid=neicun[pid2].pid; neicun[pid1].youxian=neicun[pid2].youxian; neicun[pid1].daxiao=neicun[pid2].daxiao; neicun[pid1].msg=neicun[pid2].msg; neicun[pid2].pid=waicun[20].pid; neicun[pid2].youxian=waicun[20].youxian; neicun[pid2].daxiao=waicun[20].daxiao; neicun[pid2].msg=waicun[20].msg; printf("\n替换完成\n"); printf("\n被替换进程的pid是: %d\n",waicun[20].pid); printf("被替换进程的优先级是: %d\n",waicun[20].youxian); printf("被替换进程的大小是:%d\n",waicun[20].daxiao); printf("被替换进程的消息是:%d\n",waicun[20].msg); } else { printf("\n进程优先级不够大"); } } else { printf("所查看运行进程不存在"); } printf("请按回车退出换出进程\n"); c=getche(); return; } kill()/*杀死运行进程*/ { int kpid; printf("\n请输入进程的pid\n"); scanf("%d",&kpid); if(kpid>0&&kpid<20&&neicun[kpid].live==1) { neicun[kpid].live=0; } return; } tongxun( )/*进程之间通信*/ { int tpid1,tpid2; int buffer; char d; printf("\n请输入通信源进程pid\n"); scanf("%d",&tpid1); printf("\n请输入通信目的进程pid\n"); scanf("%d",&tpid2); if(tpid1>0&&tpid1<20&&neicun[tpid1].live==1) { buffer=neicun[tpid1].msg; neicun[tpid1].msg=neicun[tpid2].msg; neicun[tpid2].msg=buffer;printf("\n源进程的消息是: %d\n",neicun[tpid1].msg);printf("\n目的进程的消息是: %d\n",neicun[tpid2].msg); } else { printf("\n所查看运行进程不存在\n"); } printf("\n请按回车退出进程通信\n"); d=getch(); return;}
1 0
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- 进程通信
- javascript代码模块化Demo(使用Require.js)
- canvas 一基础学习
- 如何解决Fail to create the java Virtual Machine
- VS中生成时“sgen.exe”已退出,代码为 1解决办法
- python对文件的操作
- 进程通信
- Android 常用组件申明及使用简集
- 康托展开(求该排列是第几大的) 模板
- C++作业5-多继承
- ClassLoader原理
- tar命令
- 设计模式六大原则(4):接口隔离原则
- Java 对数据库连接 的封装
- 第1章基础知识 (1)