淺談linux模擬多線程崩潰和多進(jìn)程崩潰
結(jié)論是:
多線程下如果其中一個(gè)線程崩潰了會(huì)導(dǎo)致其他線程(整個(gè)進(jìn)程)都崩潰;
多進(jìn)程下如果其中一個(gè)進(jìn)程崩潰了對(duì)其余進(jìn)程沒有影響;
多線程
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <pthread.h> #include <assert.h> void *fun1(void *arg) { printf("fun1 enter\n"); while(1) { printf("%s\n", __FUNCTION__); usleep(1000 * 1000); } printf("fun1 exit\n"); return ((void *)1); } void *fun2(void *arg) { printf("fun1 enter\n"); usleep(1000 * 3000); char * ptr = (char *)malloc(sizeof(char)); printf("ptr1: 0x%x\n", ptr); ptr = NULL; printf("ptr2: 0x%x\n", ptr); free(ptr); memcpy(ptr, "123", 3); printf("ptr3: 0x%x\n", ptr); printf("fun2 exit\n"); return ((void *)2); } int main(void) { pthread_t tid1, tid2; int err; err = pthread_create(&tid1, NULL, fun1, NULL); assert(0 == err); err = pthread_create(&tid2, NULL, fun2, NULL); assert(0 == err); printf("main join ...\n"); // getchar(); pthread_join(tid1, NULL); pthread_join(tid2, NULL); return 0; }
多進(jìn)程
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <pthread.h> #include <assert.h> void fun(void *arg) { printf("fun1 enter\n"); usleep(1000 * 3000); char * ptr = (char *)malloc(sizeof(char)); printf("ptr1: 0x%x\n", ptr); ptr = NULL; printf("ptr2: 0x%x\n", ptr); free(ptr); memcpy(ptr, "123", 3); printf("ptr3: 0x%x\n", ptr); printf("fun2 exit\n"); return ; } int main(int argc, char *argv[]) { assert(2 == argc); pid_t pid; int i; for(i=0; i<atoi(argv[1]); i++) { pid = fork(); if(0 > pid) { printf("fork error"); exit(1); } else if(0 == pid) { printf("child pid is %lu\n", (unsigned long)getpid()); fun(NULL); exit(0); } } printf("parent pid is %lu\n", (unsigned long)getpid()); while(-1 != wait(NULL)); //等待所有子進(jìn)程結(jié)束 printf("main return\n"); getchar(); return 0; }
到此這篇關(guān)于淺談linux模擬多線程崩潰和多進(jìn)程崩潰 的文章就介紹到這了,更多相關(guān)linux模擬多線程崩潰和多進(jìn)程崩潰 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談ubuntu執(zhí)行.sh文件幾種方式區(qū)別
這篇文章主要介紹了淺談ubuntu執(zhí)行.sh文件幾種方式區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09centos 5.1下的安全設(shè)置(適合所有的linux版本)
因?yàn)閞oot用戶對(duì)系統(tǒng)具有全權(quán)的操作權(quán)限,為了避免一些失誤的操作,建議在一般情況下,以一般用戶登錄系統(tǒng),必要的時(shí)候需要root操作權(quán)限時(shí),再通過“su -”命令來登錄為root用戶進(jìn)行操作。2010-03-03linux socket通訊獲取本地的源端口號(hào)的實(shí)現(xiàn)方法
這篇文章主要介紹了linux socket通訊獲取本地的源端口號(hào)的相關(guān)資料,需要的朋友可以參考下2017-09-09如何修改CentOS服務(wù)器時(shí)間為北京時(shí)間
這篇文章主要介紹了修改CentOS服務(wù)器時(shí)間為北京時(shí)間的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2018-10-10CentOS7安裝PHP7 Redis擴(kuò)展的方法步驟
這篇文章主要介紹了CentOS7安裝PHP7 Redis擴(kuò)展的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04解決Centos7安裝nginx后提示“Welcome to nginx on Fedora!”,conf.d目錄下無d
這篇文章主要介紹了Centos7安裝nginx后提示“Welcome to nginx on Fedora!”,conf.d目錄下無default.conf文件 ,本文給出了問題原因解析及解決方法,需要的朋友可以參考下2019-07-07