csapp ch11.5 练习题

在这里插入图片描述
我感觉可能有几个方面的原因
一个是不足值,这个时候没有读取了,操作到这里全是输出
二个是全双工,这个时候是单向的
这个答案给的是
在这里插入图片描述
我这完成打歪了呀
cgi的代码

/*
 * 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 */

csapp ch11.5 练习题_第1张图片



csapp ch11.5 练习题_第2张图片
csapp ch11.5 练习题_第3张图片
csapp ch11.5 练习题_第4张图片
在这里插入图片描述
在这里插入图片描述
这个问题的应该解释在这里
csapp ch11.5 练习题_第5张图片
在这里插入图片描述
cgi的读和写恰好是顺序的
打开两个流回内存泄漏,但是cgi执行完,内核自动关闭流,也就没有泄露的问题了。所以可以使用

你可能感兴趣的:(csapp ch11.5 练习题)