请问以下代码要如何写出易读的标注让代码便于别人理解
#include
#include
#include
#include
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;
}
该回答引用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
}
你的意思是写注释?你可以加上适当的注释,但是这些代码不加也很清楚