information that was written to stdout. This will cause the web browser to display
aDocument Contains No Dataerror message. Another application could run
again in the same activation group that properly erased stdout. In this instance, the
data that has been buffered from previous calls would be sent.
#include <stdio.h>
void main(void) {
/***************************************************/
/* Write header information. */
/***************************************************/
printf("Content-type: text/html\n\n");
/***************************************************/
/* Write header information. */
/***************************************************/
printf("Hello World\n");
}
End processing may not erase stdio buffers so the application must erase the
stdout with a fflush(stdout) call. The following example will work regardless of the
activation group specification:
#include <stdio.h>
void main(void) {
/***************************************************/
/* Write header information. */
/***************************************************/
printf("Content-type: text/html\n\n");
/***************************************************/
/* Write header information. */
/***************************************************/
printf("Hello World\n");
/*-------------------------------------------------*/
/* FIX: Flush stdout. */
/*-------------------------------------------------*/
fflush(stdout);
}
When run in a *NEW activation group, this example CGI would read
CONTENT_LENGTH bytes of data from stdin and write this back out to stdout.
The system has allocated the buffer that is used to hold the data with a malloc.
Like the example that is previously shown, this application is relying on several
aspects of job end processing to function properly.
If this CGI program were built to run in either a user-named or *CALLER
activation group, the following problems would occur:
vAs with the simple example that is previously shown, the application is not
erasing stdout. This would cause the web browser to display a Document
Contains No Dataerror message. You could runanother application again in
the same activation group that properly erased stdout. This would send the data
that has been buffered from previous calls.
vStdin is buffered similar to stdout. If the contents of stdin are not erased, the
stdin data on the second and all following calls of the CGI program will be
unpredictable and the contents may at times contain information from
subsequent requests.
Chapter1. Writing Common Gateway Interface Programs 19