linux高级编程day07 笔记
2012-08-22 10:13
274 查看
回顾:
1.信号的作用
2.理解信号:
软中断
可靠与不可靠信号kill -l
3.信号发送与注册kill/raise alarm setitimer signal
4.信号的屏蔽sigprocmask sigemptyset sigfillset ...
5.信号屏蔽的切换
sigpending
sigsuspend
=pause+
指定屏蔽信号
pause与sigsuspend都回被信号中断.
中断的是pause与sigsuspen,不是进程中其他代码
sigsuspend放在sigprocmask环境中思考:
5.1.sigsuspend是否影响sigprocmask屏蔽的信号呢?
影响.使原来的屏蔽信号全部失效.
当sigsuspend返回,恢复原来的屏蔽信号.
5.2.sigsuspend什么时候使用?
View Code
1.信号的作用
2.理解信号:
软中断
可靠与不可靠信号kill -l
3.信号发送与注册kill/raise alarm setitimer signal
4.信号的屏蔽sigprocmask sigemptyset sigfillset ...
5.信号屏蔽的切换
sigpending
sigsuspend
=pause+
指定屏蔽信号
pause与sigsuspend都回被信号中断.
中断的是pause与sigsuspen,不是进程中其他代码
sigsuspend放在sigprocmask环境中思考:
5.1.sigsuspend是否影响sigprocmask屏蔽的信号呢?
影响.使原来的屏蔽信号全部失效.
当sigsuspend返回,恢复原来的屏蔽信号.
5.2.sigsuspend什么时候使用?
View Code
#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <signal.h> #include <stdlib.h> #include <string.h> #include <sched.h> int idx=0; int fddata; void handle(int s) { int status; if(s==SIGCHLD) { wait(&status); idx++; if(idx==2) { close(fddata); printf("任务完成\n"); exit(-1); } } } int isprimer(int ta) { int i=2; for(;i<ta;i++) { if(ta%i==0) { return 0; } } return 1; } main() { int a,b; int id=1; int fd[2]; signal(SIGCHLD,handle); pipe(fd); while(1) { if(id==1){ a=2;b=50000; } if(id==2){ a=50001;b=100000; } if(fork()){ id++; if(id>2){ break; } continue; } else{ //子进程 int i; close(fd[0]); for(i=a;i<=b;i++) { if(isprimer(i)) { write(fd[1],&i,sizeof(int)); } sched_yield(); } printf("%d任务完成!\n",getpid()); exit(0); } } int re; char buf[20]; //打开文件,准备存储 close(fd[1]); fddata=open("result.txt", O_RDWR|O_CREAT,0666); while(1) { read(fd[0],&re,sizeof(int)); sprintf(buf,"%d\n",re); write(fddata,buf,strlen(buf)); sched_yield(); } }
相关文章推荐
- c++ 学习笔记(高级linux编程) day2
- linux高级编程day02 笔记
- c++ 学习笔记(高级linux编程) day10
- linux高级编程day08 笔记
- 【linux高级环境编程学习笔记二】信号通信
- linux高级编程day01 笔记
- c++ 学习笔记(高级linux编程) day11
- Linux高级编程复习笔记 第五章 exec 进程 父子进程 fork()
- c++ 学习笔记(高级linux编程) day9
- Linux高级编程复习笔记 第一章 内存管理 malloc new delete free sbrk brk
- c++ 学习笔记(高级linux编程) day14
- linux高级编程day06 笔记
- 【linux高级环境编程学习笔记三】共享内存通信
- c++ 学习笔记(高级linux编程) day13
- linux高级编程day04 笔记
- Linux高级文件编程 标准C部分笔记
- c++ 学习笔记(高级linux编程) day12
- linux高级编程day10 笔记
- 寒假学习 第15天 (linux 高级编程) 笔记 总结
- c++ 学习笔记(高级linux编程) day1