3 POSIX 多任务及同步机制-实验1: fork创建进程
一.实验目的
·掌握fork函数及其特点。
·通过实验深入理解操作系统的进程概念,Linux的进程概念。
二.实验背景
·Fork创建子进程中的问题
·进程的地址空间:教材P.187-188 newproc_posix.c代码
·父子进程的并发执行:教材P.188 newproc_posix.c代码执行结果以及两个问题
·Fork/exec流程:新进程覆盖子进程 (如果exec 函数调用成功,进程自己的执行代码就会变成加载程序的代码,execlp() 后面的代码也就不会执行了)
·孤儿进程和僵尸进程的形成原因
三.关键代码及分析
#include <stdio.h>
#include <stdlib.h> //for malloc
#include <string.h> //for mesmset,strcpy
#include <unistd.h>
#include <sys/types.h>
int main()
{
pid_t pid;
pid_t pid2;
int var=88;
char *str = (char*)malloc(sizeof(char)*10);
memset(str, 0x00, 10);
/* fork a child process */
pid = fork();
if (pid < 0) {
/* error occurred */
fprintf(stderr, "Fork Failed\n");
return 1;
}
else if (pid == 0) {
/* child process */
printf("I am the child %d\n",pid); //行A
pid2 = getpid();
printf("I am the child %d\n",pid2);
strcpy(str, "child"

本文详细解析Linux环境下fork函数的使用与特性,探讨多任务处理、进程间通信及同步机制。通过实验代码示例,深入理解进程创建、父子进程执行顺序、孤儿进程与僵尸进程的概念。
最低0.47元/天 解锁文章
381

被折叠的 条评论
为什么被折叠?



