并发小程序
02fock.c?
#include <sys/types.h> #include <unistd.h> #include <stdio.h>int main() {printf("Hello,Process!\n");pid_t pid = fork();if(pid == -1)//錯誤處理{perror("fork failed");return 0;}else if(pid > 0){//這是父進程要做的事情//fork給父進程返回子進程的IDprintf("這是父進程,我的ID是%d\n",getpid());printf("這是父進程,我的父進程的ID是%d\n",getppid());printf("這是父進程,我的子進程的ID是%d\n",pid);}else if(pid == 0){//這是子進程要做的事情printf("這是子進程,我的ID是%d\n",getpid());printf("這是子進程,我的父進程的ID是%d\n",getppid());}printf("Goodbye,Process!\n");return 0; }03fock.c
#include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h>int sum(int a,int b) {//return a + b;exit(a+b); }int main() {fork();sum(5,3);printf("Hello,Process!\n");return 0; }head.h
#ifndef __HEAD_H__ #define __HEAD_H__#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <dirent.h> #include <string.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #include <semaphore.h>#endif?
04exit.c
#include "head.h"int main() {pid_t pid = fork();if(pid == -1){}else if(pid > 0){printf("這是父進程,hello!\n");sleep(30);}else{printf("這是子進程,我嗝屁了!\n");exit(0);} }05.c
#include "head.h"int main() {pid_t pid = fork();if(pid == -1){}else if(pid == 0)//子進程{printf("這是子進程,子進程ID:%d\n",getpid());printf("這是子進程,父進程ID:%d\n",getppid());//return 260;exit(250);} else//父進程{printf("這是父進程,父進程ID為:%d\n",getpid());int sta;pid_t pid1 = waitpid(pid,&sta,0);if(WIFEXITED(sta)){printf("sta = %d\n",sta);printf("退出進程的ID:%d,退出碼為%d\n",pid1,WEXITSTATUS(sta));}} }06.c
#include "head.h"//自定義的中斷服務處理函數 void my_sig_handler(int sig) {printf("xixi,你咋嗝屁了!\n");wait(NULL); }int main() {signal(SIGCHLD,my_sig_handler);pid_t pid = fork();if(pid == -1){}else if(pid == 0){printf("這是子進程,我馬上要嗝屁了!\n");sleep(3);exit(0);}else{while(1);} }?
?
總結
- 上一篇: 损友圈在哪下载(损友是什么意思)
- 下一篇: fscanf简单使用