Download SICStus Prolog User's Manual
Transcript
164
SICStus Prolog
yes
8.10.4 Stream Example
This is a small example how to initialize a bidirectional socket stream (error handling omitted):
typedef struct {
int fd;
FILE *r_stream;
FILE *w_stream;
} SocketData;
/* socket number */
/* For reading */
/* For writing */
int socket_sgetc(SocketData *socket)
{
return fgetc(socket->r_stream);
}
int socket_sputc(char c, SocketData *socket)
{
return fputc(c, socket->w_stream);
}
int socket_sflush(SocketData *socket)
{
return fflush(socket->w_stream);
}
int socket_seof(SocketData *socket)
{
return feof(socket->r_stream);
}
void socket_sclrerr(SocketData *socket)
{
clearerr(socket->r_stream);
clearerr(socket->w_stream);
}
int socket_sclose(SocketData *socket)
{
fclose(socket->r_stream);
fclose(socket->w_stream);
close(socket->fd);
free(socket);
return 0;
}
Related documents