Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Jun 2001 20:56:39 +0800
From:      "Ming-I Hsieh" <mihs@wmlab.csie.ncu.edu.tw>
To:        <hackers@FreeBSD.ORG>
Subject:   a bug in ipfstream under FreeBSD 4.3-RELEASE?
Message-ID:  <001901c0f1ac$cb716890$2a9c738c@mihs>

next in thread | raw e-mail | index | archive | help
In one case, I need to analyse the data flow of FreeBSD box. Therefore, I
uses ipfstream to get report from 'ipfw show'. After program runs several
days, I notes some odd number in kern.openfiles. I uses fstat to find out
what thing is happened. Then I find my program does *not* release the fd
after the ipfstream has droped. Now I uses popen and pclose to replace
ipfstream. It works fine. Anyone know what thing happens? Is it a bug for
pfstream? Or just my fault. The testing program is below. Thanks.

//--------------------------------------------------------------------------
-
// pfstream bug?
//--------------------------------------------------------------------------
-
#include <pfstream.h>
#include <iostream>
#include <sysexits.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

//--------------------------------------------------------------------------
-
int main(int argc, char ** argv)
{
        if (argc < 3) {
                cerr.form("Usage: %s trynum sleep_time\n", argv[0]);
                return EX_USAGE;
        }

        register int i = 0, iend = atoi(argv[1]);
        for (i = 0; i < iend; i++) {
                ipfstream pfin("|/bin/ls /bin", ios::in);
                char buffer[1024];
                // Read data from pfin
                while (pfin.getline(buffer, 1024)) {
                        // Do nothing.
                }
        }

        cout.form("Try \"fstat -p %d\"\n", getpid());
        cout.form("Ok! Go to Sleep. [%d sec]\n", atoi(argv[2]));
        sleep(atoi(argv[2]));

        return EX_OK;
}

//--------------------------------------------------------------------------
-



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001901c0f1ac$cb716890$2a9c738c>