Conclusion: Multithreading #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; } Multi-process #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)); //Wait for all subprocesses to finish printf("main return\n"); getchar(); return 0; } This is the end of this article about Linux simulation of multi-threaded crashes and multi-process crashes. For more relevant Linux simulation of multi-threaded crashes and multi-process crashes, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: The difference between distinct and group by in MySQL
>>: Detailed explanation of the differences between var, let and const in JavaScript es6
background Last week the company trained on MySQL...
For those who don't know how to install the s...
Use text-align, margin: 0 auto to center in CSS W...
The first step is to install TypeScript globally ...
This article introduces the sample code of CSS3 t...
This article shares the specific code for JavaScr...
This article example shares the specific code of ...
Preface Two types of swap space can be created un...
This article example shares the specific code of ...
Today I will talk to you about clearing floats. B...
Problem description: I used a desktop computer an...
Preface What is data type conversion? The default...
Body part: <button>Turn on/off light</bu...
Generally, learning Java and deploying projects a...
Table of contents 1. Problem Discovery 2. View de...