平成的艾琳艾德勒吧 关注:77贴子:2,169
  • 0回复贴,共1

对面的我先

只看楼主收藏回复

#include <stdio.h>#include <unistd.h>#include <sys/wait.h>#include <stdlib.h>
#define STUDENT_ID#define CLASS "计算机"#define NAME ""
int main() { pid_t pid1, pid2; int last_digit = STUDENT_ID % 10; // 计算学号最后一位
printf("父进程:PID = %d\n", getpid());
pid1 = fork();
if (pid1 < 0) { perror("子进程1创建失败\n"); exit(1); }
if (pid1 == 0) { // 子进程1 printf("子进程1:PID = %d, 父PID = %d\n", getpid(), getppid()); printf("子进程1,学号:%d,班级:%s,姓名:%s\n", STUDENT_ID, CLASS, NAME);
if (last_digit % 2 != 0) { // 图1中的进程树 pid_t pid3 = fork(); if (pid3 < 0) { perror("子进程3创建失败\n"); exit(1); } if (pid3 == 0) { // 子进程3 printf("子进程3:PID = %d, 父PID = %d\n", getpid(), getppid()); printf("子进程3,运行结束\n"); exit(0); } else { wait(NULL); // 等待子进程3结束 printf("子进程1,运行结束\n"); exit(0); } } else { // 图2中无其他子进程,直接结束 printf("子进程1,运行结束\n"); exit(0); } } else { pid2 = fork();
if (pid2 < 0) { perror("子进程2创建失败\n"); exit(1); }
if (pid2 == 0) { // 子进程2 printf("子进程2:PID = %d, 父PID = %d\n", getpid(), getppid()); printf("子进程2,运行结束\n"); exit(0); } else { // 父进程 wait(NULL); // 等待子进程1结束 wait(NULL); // 等待子进程2结束 printf("Hello Linux\n"); printf("父进程:运行结束\n"); } }
return 0;}


IP属地:北京来自Android客户端1楼2024-12-25 09:04回复