资源简介
(1)进程的软中断通信
#include
#include
#include
#include
int wait_flag;
void stop();
main( ) {
int pid1, pid2; // 定义两个进程号变量
signal(2,stop); // 或者 signal (14,stop);
while((pid1 = fork( )) == -1); // 若创建子进程1不成功,则空循环
if(pid1 > 0) { // 子进程创建成功,pid1为进程号
while((pid2 = fork( )) == -1); // 创建子进程2
if(pid2 > 0) {
wait_flag = 1;
//sleep(1); // 父进程等待5秒
kill(pid1,SIGUSR1); // 杀死进程1
kill(pid2,SIGUSR2); // 杀死进程2
wait(0);
wait(0);
printf("\n Parent process is killed !!\n");
exit(0); // 父进程结束
}
else {
wait_flag = 1;
signal(SIGUSR2,stop); // 等待进程2被杀死的中断号17
printf("\n Child process 2 is killed by parent !!\n");
exit(0);
}
}
else
{
wait_flag = 1;
signal(SIGUSR1,stop); // 等待进程1被杀死的中断号16
printf("\n Child process 1 is killed by parent !!\n");
exit(0);
}
}
void stop() {
wait_flag = 0;
}
(2)进程的管道通信
#include
#include
#include
int pid1,pid2; // 定义两个进程变量
main( ) {
int fd[2];
char OutPipe[100],InPipe[100]; // 定义两个字符数组
pipe(fd); // 创建管道
while((pid1 = fork( )) == -1); // 如果进程1创建不成功,则空循环
if(pid1 == 0) {
lockf(fd[1],1,0); // 锁定管道
sprintf(OutPipe,"\n Child process 1 is sending message!\n");
write(fd[1],OutPipe,50); // 向管道写入数据
sleep(5); // 等待读进程读出数据
lockf(fd[1],0,0); // 解除管道的锁定
exit(0); // 结束进程1
}
else {
while((pid2 = fork()) == -1); // 若进程2创建不成功,则空循环
if(pid2 == 0) {
lockf(fd[1],1,0);
sprintf(OutPipe,"\n Child process 2 is sending message!\n");
write(fd[1],OutPipe,50);
sleep(5);
lockf(fd[1],0,0);
exit(0);
}
else {
wait(0);
代码片段和文件信息
- 上一篇:符号表设计与实现
- 下一篇:Dubbo入门Demo
相关资源
- 进程和线程同步和互斥
- ProcessProtect.rar
- Windows进程间通信之共享内存
- bat监控windows进程并自动重启
- Linux C利用多进程或多线程模拟实现生
- 动态优先数高者进程调度算法
- 进程状态转换包括创建、删除、调度
- system权限进程以user权限调用进程
- 进程解锁软件 unclock
- 华中科技大学操作系统课程设计——
- Delphi写的守护进程服务程序
- 进程死锁的检测
- 模拟操作系统 os 进程 设备 磁盘 文件
- 北京化工大学操作系统上机源码八个
- Qt编写守护进程
- 命名管道实现进程间通信程序
- 远程进程通信+shell
- 进程互斥.并发.同步程序
- 进程空中技术在内存中加载exe
- ARM LINUX 进程间通讯 共享内存
- 多进程同步橘子苹果问题
- 操作系统进程管理与内存管理QT实现界
- 简单的windows任务管理器源代码
- 操作系统原理课程设计报告
- rootkit,文件,进程隐藏
- 进程调度 优先权和轮转法
- 双管道CreatePipe与cmd.exe进程间通信的有
- 进程同步模拟设计--吃水果问题
- 进程管理大作业源码电梯调度算法操
- 辅助防检测--进程隐藏
评论
共有 条评论