fork()
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(){
pid_t pid = fork();
if(pid > 0){
printf("parent: pid : %d \n", pid);
printf("I am parent process, pid : %d, ppid : %d \n", getpid(), getppid());
}else if(pid == 0){
printf("I am child process, pid : %d, ppid : %d \n", getpid(), getppid());
}
for(int i=0; i<5; i++){
printf("i : %d, pid : %d \n", i, getpid());
sleep(1);
}
return 0;
}
写时拷贝(*)
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(){
int num = 10;
pid_t pid = fork();
if(pid > 0){
printf("parent: num = %d \n", num);
num + 10;
printf("parent: num + 10 = %d \n", num);
}else{
printf("child: num = %d \n", num);
num += 100;
printf("child: num + 100 = %d \n", num);
}
return 0;
}
carey@ubuntu:~/Linux/lesson10_threadC$ gcc fork1.c -o fork1
carey@ubuntu:~/Linux/lesson10_threadC$ ./fork1
parent: num = 10
parent: num + 10 = 10
child: num = 10
child: num + 100 = 110
carey@ubuntu:~/Linux/lesson10_threadC$
GDB多进程调试(*)