A következo program az elobbieknek a használatát mutatja be - inkább a
programozó szemszögébol. A program eloször megnyitja a /dev/bcndm0
STREAMS drivert, ráhelyezi a birk nevu STREAMS modult, majd ezen I/O
muveleteket végez. (A modul ill. driver implementációja késobb lesz
ismertetve.) Ez azt jelenti, hogy a megnyitott fileba írt illetve az
onnan beolvasott adatok ( üzenetek) keresztülmennek a birk nevu
modulon is, ami a feladatának megfelelo dolgokat elvégezheti rajtuk.
Látható, hogy a kernelben levo modulokat nevükkel lehet azonosítani (a
modulnevek bekerülnek egy fmodsw kernel táblázatba). A program
végül leveszi a driverrol a birk nevu modult, és lezárja a megnyitott
filet.
A következo ábra bemutat egy streamet az I_PUSH
elott és után.
#include <stropts.h> /* Konstansok miatt kell */
#include <fcntl.h>
main() /* STREAMS pelda */
{
char buf[512];
int fd,count;
/* Driver megnyitasa : */
if ((fd=open("/dev/bcndm0",O_RDWR)) == -1 )
{ perror("/dev/bcndm0"); exit(1); }
/* Modul rahelyezese : */
if (ioctl(fd,I_PUSH,"birk") == -1)
{ perror("Push birk"); exit(2); }
while ((count = read(0,buf,512) ) > 0) /* STANDARD inputrol olvas */
if (write(fd,buf,count) != count)
{ perror("/dev/bcndm0"); exit(3); }
/* Modul leszedese : */
if (ioctl(fd,I_POP,0) == -1)
{ perror("Pop birk"); exit(2); }
close(fd);
}