SIGTSTP和SIGSTOP的区别

    SIGTSTP与SIGSTOP都是使进程暂停(都使用SIGCONT让进程重新激活)。唯一的区别是SIGSTOP不可以捕获。

捕捉SIGTSTP后一般处理如下:

1)处理完额外的事

2)恢复默认处理

3)发送SIGTSTP信号给自己。(使进程进入suspend状态。)

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
操作系统实验三实验报告 基本信息 1.1 实验题目 进程调度算法实验 1.2完成人 王召德 1.3报告日期 2015-4-16 实验内容简要描述 2.1实验目标 加深对进程调度概念的理解,体验进程调度机制的功能,了解 Linux 系统中进程 调度策略的使用方法。 练习进程调度算法的编程和调试技术。 2.2实验要求 设有两个并发执行的父子进程,不断循环输出各自进程号、优先数和调度策 略。进程初始调度策略均为系统默认策略和默认优先级。当某个进程收到 SIGINT 信号时会自动将其优先数加 1,收到 SIGTSTP 信号时会自动将其优先数减 1。请编 程实现以上功能。 2.3实验的软硬件环境 Ubuntu14.04 intelPC 操作系统实验三实验报告全文共5页,当前为第1页。 操作系统实验三实验报告全文共5页,当前为第1页。 报告的主要内容 3.1实验的思路 父进程生成子进程分别都绑定SIGINT和SIGTSTP信号,并且在函数中分别让优先级加一和减一,然后分别打印二十次自己的PID,优先级,调度策略。每次按Ctrl-C优先级会加一,按Ctrl-Z优先级会减一。 3.2实验模型的描述 无 3.3主要数据结构的分析说明 无 3.4主要算法代码的分析说明 无 3.5项目管理文件的说明 无 实验过程和结果 4.1实验投入的实际学时数 1学时 4.2调试排错过程的记录 在调试过程中,两个进程id搞错导致处理错误 操作系统实验三实验报告全文共5页,当前为第2页。4.3多种方式测试结果的记录 操作系统实验三实验报告全文共5页,当前为第2页。 4.4实验结果的分析综合 无 实验的总结 系统可以有多种不同的策略调度进程,其中按照优先级调度,可以给某个进程设置优先级,这个优先级可正可负,可以根据优先级的大小进行调度,而且这个优先级可以在进程执行中改变。 附录 程序源代码 #include <sched.h> #include <sys/time.h> #include <sys/resource.h> 操作系统实验三实验报告全文共5页,当前为第3页。#include <signal.h> 操作系统实验三实验报告全文共5页,当前为第3页。 #include <stdio.h> #include <stdlib.h> // SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。 // SIGTSTP 停止进程的运行, 但该信号可以被处理和忽略. 用户键入SUSP字符时(通常是Ctrl-Z)发出这个信号 typedef void (*sighandler_t) (int); void sigcat_1(){ printf("SIGINT信号,优先度加一\n"); setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,getpid())+1); } void sigcat_2(){ printf("SIGTSTP信号,优先度减一\n"); setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,getpid())-1); } int main(int argc, char *argv[]){ int i,j,pid; //srand((unsigned)time(0)); printf("Ctrl-C让进程优先度加一,Ctrl-Z让进程优先度减一"); if((pid=fork())==0) { signal(SIGINT,(sighandler_t)sigcat_1); signal(SIGTSTP,(sighandler_t)sigcat_2); for(i=0;i<20;i++){ printf("子进程 PID = %d 优先级= %d ,调度策略= %d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getpid())); /* if(rand()%2){ printf("子进程发送SIGINT信号给父进程\n"); kill(getppid(),SIGINT); }else{ printf("子进程发送SIGTSTP信号给父进程\n"); 操作系统实验三实验报告全文共5页,当前为第4页。 kill(getppid(),SIGTSTP); 操作系统实验三实验报告全文共5页,当前为第4页。 } pause(); */ sleep(1); } }else{ signal(SIGINT,(sighandler_t)sigcat_1); signal(SIGTSTP,(sigha

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值