• 大小: 10KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-05-21
  • 语言: 其他
  • 标签:

资源简介

3.4 独立实验 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 设有两个并发执行的父子进程,不断循环输出各自号、优先数和调度策略。 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 进程初始调度策略均为系统默认和优先级。当 父进程收到 进程收到 由键盘 由键盘 Ctrl+CCtrl+C Ctrl+C 发 出的 SIGINT SIGINTSIGINTSIGINTSIGINT信号时会自动将其优先数加 信号时会自动将其优先数加 信号时会自动将其优先数加 信号时会自动将其优先数加 信号时会自动将其优先数加 信号时会自动将其优先数加 信号时会自动将其优先数加 1,子进程 子进程 收到 由键盘 由键盘 Ctrl+ZCtrl+Z Ctrl+Z发出的 SIG SIGTSTP STP信号时会自动将其优先数减 信号时会自动将其优先数减 信号时会自动将其优先数减 信号时会自动将其优先数减 信号时会自动将其优先数减 信号时会自动将其优先数减 信号时会自动将其优先数减 1。 请编程实现以上功能。 请编程实现以上功能。 请编程实现以上功能。 请编程实现以上功能。 请编程实现以上功能。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

typedef void (*sighandler_t)(int);

void sigcat(){
//+1
  setpriority(PRIO_PROCESS getpid() getpriority(PRIO_PROCESS 0) + 1);
}

void sigzat(){
//-1
  setpriority(PRIO_PROCESS getpid() getpriority(PRIO_PROCESS 0) - 1);
}

void nothing() {}

int main(int argc char *argv[])
{
int pid; //存放进程号
struct sched_param p[2]; //设置调度策略时使用的数据结构
int i;
for( i=0; i<2;i++){
//取进程优先数放在调度策略数据结构中
p[i].sched_priority = 10;
}

pid = fork();
if(pid < 0){
    printf(“failed!“);
}
else if(pid > 0){
    signal(SIGINT (sighandler_t)sigcat);  //-1
    signal(SIGTSTP (sighandler_t)nothing);

    sched_setscheduler(getpid() SCHED_OTHER &p[0]);
    setpriority(PRIO_PROCESS getpid() 10);

    sleep(2);
    //循环报告其优先数和调度策略
    while(1){
       printf(“parent PID = %d priority = %d scheduler = %d\n“ getpid()getpriority(PRIO_PROCESS 0) sched_getscheduler(getpid()));

    sleep(4);
   }
}


else{
    signal(SIGTSTP (sighandler_t)sigzat);
    signal(SIGINT (sighandler_t)nothing);

    sched_setscheduler(getpid() SCHED_OTHER &p[1]);
    setpriority(PRIO_PROCESS getpid() 10);

    sleep(2);
    ///循环报告其优先数和调度策略
    while(1){
    printf(“Child PID = %d priority= %d scheduler = %d\n“getpid()getpriority(PRIO_PROCESS0) sched_getscheduler(getpid()));

    
    sleep(4);
}
exit( EXIT_SUCCESS);
}
return EXIT_SUCCESS;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-05-03 19:43  test3\
     文件         189  2013-04-26 14:43  test3\#Makefile#~
     文件        7586  2013-04-26 17:14  test3\.goutputstream-CBM1VW
     文件        7773  2013-05-03 19:42  test3\a.out
     文件         154  2013-04-26 15:08  test3\Makefile
     文件         189  2013-04-26 14:47  test3\Makefile~
     文件        1637  2013-05-03 19:43  test3\psched.c
     文件        1705  2013-04-26 14:57  test3\psched.c ~
     文件        1637  2013-05-03 19:43  test3\psched.c~
     文件           0  2013-04-26 15:08  test3\无标题文档~

评论

共有 条评论