亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業社區

探索學習新天地,共享知識資源!

0 提交作業
0 布置作業
0 滿分作業
得分 100
學習任務

qq_康斯坦丁_0 的學生作業:

#include #include #include #include #include #include #include // 子進程B的信號處理函數 void sig_handler(int signo) { printf(“子進程B收到信號: %s\n”, strsignal(signo)); } int main() { pid_t pid1, pid2; int status; // 創建第一個子進程(A) pid1 = fork(); if (pid1 < 0) { perror("創建子進程A失敗"); exit(1); } if (pid1 == 0) { // 子進程A代碼 printf("子進程A (PID: %d) 開始運行,使用默認信號處理方式\n", getpid()); while(1) { sleep(1); } exit(0); } else { // 父進程繼續創建第二個子進程(B) pid2 = fork(); if (pid2 < 0) { perror("創建子進程B失敗"); exit(1); } if (pid2 == 0) { // 子進程B代碼 // 設置SIGUSR2的信號處理函數 if (signal(SIGUSR2, sig_handler) == SIG_ERR) { perror("設置信號處理函數失敗"); exit(1); } printf("子進程B (PID: %d) 開始運行,使用自定義信號處理函數\n", getpid()); while(1) { sleep(1); } exit(0); } else { // 父進程代碼 printf("父進程 (PID: %d) 創建了兩個子進程: A(%d) 和 B(%d)\n", getpid(), pid1, pid2); // 等待3秒,讓子進程有時間打印信息 sleep(3); // 向子進程A發送SIGUSR1信號 printf("\n父進程正在發送SIGUSR1信號給子進程A...\n"); if (kill(pid1, SIGUSR1) == 0) { printf("成功發送SIGUSR1信號給子進程A (PID: %d)\n", pid1); } else { perror("向子進程A發送SIGUSR1信號失敗"); } // 向子進程B發送SIGUSR2信號 printf("\n父進程正在發送SIGUSR2信號給子進程B...\n"); if (kill(pid2, SIGUSR2) == 0) { printf("成功發送SIGUSR2信號給子進程B (PID: %d)\n", pid2); } else { perror("向子進程B發送SIGUSR2信號失敗"); } // 等待一秒讓信號處理完成 sleep(1); // 終止子進程 printf("\n父進程正在終止子進程...\n"); kill(pid1, SIGKILL); kill(pid2, SIGKILL); // 等待子進程結束 waitpid(pid1, &status, 0); printf("子進程A (PID: %d) 已終止\n", pid1); waitpid(pid2, &status, 0); printf("子進程B (PID: %d) 已終止\n", pid2); printf("\n所有子進程已終止,父進程退出\n"); } } return 0; }

得分 100
學習任務

qq_康斯坦丁_0 的學生作業:

#include #include #include #include #include #include int main() { pid_t pid1, pid2; int status; // 創建第一個子進程 pid1 = fork(); if (pid1 < 0) { perror("第一個子進程創建失敗"); exit(1); } if (pid1 == 0) { // 第一個子進程代碼 printf("子進程1 (PID: %d) 開始運行\n", getpid()); while(1) { sleep(1); } exit(0); } else { // 父進程繼續創建第二個子進程 pid2 = fork(); if (pid2 < 0) { perror("第二個子進程創建失敗"); exit(1); } if (pid2 == 0) { // 第二個子進程代碼 printf("子進程2 (PID: %d) 開始運行\n", getpid()); while(1) { sleep(1); } exit(0); } else { // 父進程代碼 printf("父進程 (PID: %d) 創建了兩個子進程: %d 和 %d\n", getpid(), pid1, pid2); // 等待3秒,讓子進程有時間打印信息 sleep(3); // 向兩個子進程發送SIGKILL信號 printf("\n父進程正在發送SIGKILL信號給子進程...\n"); if (kill(pid1, SIGKILL) == 0) { printf("成功發送SIGKILL信號給子進程1 (PID: %d)\n", pid1); } else { perror("向子進程1發送SIGKILL信號失敗"); } if (kill(pid2, SIGKILL) == 0) { printf("成功發送SIGKILL信號給子進程2 (PID: %d)\n", pid2); } else { perror("向子進程2發送SIGKILL信號失敗"); } // 等待兩個子進程結束 waitpid(pid1, &status, 0); printf("子進程1 (PID: %d) 已終止\n", pid1); waitpid(pid2, &status, 0); printf("子進程2 (PID: %d) 已終止\n", pid2); printf("\n所有子進程已終止,父進程退出\n"); } } return 0; }

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號