csapp ch11.8 家庭作业

在这里插入图片描述
首先是SIGCHLD是什么
csapp ch11.8 家庭作业_第1张图片
然后CGI子进程有哪些资源需要关闭
以adder为例,代码

/*
 * adder.c - a minimal CGI program that adds two numbers together
 */
/* $begin adder */
#include "csapp.h"

int main(void) {
    char *buf, *p;
    char arg1[MAXLINE], arg2[MAXLINE], content[MAXLINE];
    int n1=0, n2=0;

    /* Extract the two arguments */
    if ((buf = getenv("QUERY_STRING")) != NULL) {
	p = strchr(buf, '&');
	*p = '\0';
	strcpy(arg1, buf);
	strcpy(arg2, p+1);
	n1 = atoi(arg1);
	n2 = atoi(arg2);
    }

    /* Make the response body */
    sprintf(content, "Welcome to add.com: ");
    sprintf(content, "%sTHE Internet addition portal.\r\n

", content); sprintf(content, "%sThe answer is: %d + %d = %d\r\n

", content, n1, n2, n1 + n2); sprintf(content, "%sThanks for visiting!\r\n", content); /* Generate the HTTP response */ printf("Connection: close\r\n"); printf("Content-length: %d\r\n", (int)strlen(content)); printf("Content-type: text/html\r\n\r\n"); printf("%s", content); fflush(stdout); exit(0); } /* $end adder */

父进程wait的地方
csapp ch11.8 家庭作业_第2张图片
再回到之前的那个问题
在这里插入图片描述
在这里插入图片描述
想到这里的时候,一个是CGI进程的资源是不是只有一个fd,一个是Wait()到底起了到了什么作用。
csapp ch11.8 家庭作业_第3张图片
卡在这里后,决定去读第8章,这里留下的问题是

  • 什么是僵尸进程
  • 进程怎么回收资源
  • 父进程怎么知道子进程完成了
  • 子进程完成了怎么不自己回收资源

你可能感兴趣的:(csapp ch11.8 家庭作业)