Blues876 2023-03-19 10:15 采纳率: 38.5%
浏览 17
已结题

C语言代码标注的相关问题

请问以下代码要如何写出易读的标注让代码便于别人理解

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
int wait_flag;
void stop();
main() {
        int pid1, pid2;
        signal(3,stop); // or signal(14,stop);
        while((pid1 = fork( )) == -1);
        if(pid1> 0) {
            while((pid2 = fork( )) == -1);
            if(pid2> 0) {
                wait_flag = 1;
                sleep(5);
                kill(pid1,16);
                kill(pid2,17);
                wait(0);
                wait(0);
                printf("\n Parent process is killed !!\n");
                exit(0);
            }
            else {
                wait_flag = 1;
                signal(17,stop);
                printf("\n Child process 2 is killed by parent !!\n");
                exit(0);
            }
        }
        else {
            wait_flag = 1;
            signal(16,stop);
            printf("\n Child process 1 is killed by parent !!\n");
            exit(0);
        }
}
void stop() {
wait_flag = 0;
    }

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-03-19 11:38
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    以下是对该代码的标注,以便于理解:

    #include <stdio.h>
    #include <signal.h>
    #include <unistd.h>
    #include <sys/types.h>
    
    int wait_flag; // 定义全局变量,表示是否等待子进程结束
    
    void stop(); // 声明函数stop
    
    main() { // 主函数
            int pid1, pid2; // 定义两个进程id
            signal(3,stop); // 注册信号处理函数stop,当进程收到信号3时,会调用stop函数
            while((pid1 = fork( )) == -1); // 创建第一个子进程
            if(pid1> 0) { // 父进程代码块
                while((pid2 = fork( )) == -1); // 创建第二个子进程
                if(pid2> 0) { // 父进程代码块
                    wait_flag = 1; // 设置等待子进程结束的标志
                    sleep(5); // 父进程休眠5秒
                    kill(pid1,16); // 向第一个子进程发送16号信号
                    kill(pid2,17); // 向第二个子进程发送17号信号
                    wait(0); // 等待第一个子进程结束
                    wait(0); // 等待第二个子进程结束
                    printf("\n Parent process is killed !!\n"); // 输出提示信息
                    exit(0); // 程序退出
                }
                else { // 第二个子进程代码块
                    wait_flag = 1; // 设置等待子进程结束的标志
                    signal(17,stop); // 注册信号处理函数stop,当进程收到信号17时,会调用stop函数
                    printf("\n Child process 2 is killed by parent !!\n"); // 输出提示信息
                    exit(0); // 程序退出
                }
            }
            else { // 第一个子进程代码块
                wait_flag = 1; // 设置等待子进程结束的标志
                signal(16,stop); // 注册信号处理函数stop,当进程收到信号16时,会调用stop函数
                printf("\n Child process 1 is killed by parent !!\n"); // 输出提示信息
                exit(0); // 程序退出
            }
    }
    
    void stop() { // 定义信号处理函数stop
        wait_flag = 0; // 设置等待子进程结束的标志为0
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。