logo
Apache Lounge
Webmasters

 

About Forum Index Downloads Search Register Log in RSS X


Keep Server Online

If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.

or

Bitcoin

A donation makes a contribution towards the costs, the time and effort that's going in this site and building.

Thank You! Steffen

Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
Post new topic   Forum Index -> Coding & Scripting Corner View previous topic :: View next topic
Reply to topic   Topic: Bad file descriptor
Author
antares



Joined: 13 Oct 2010
Posts: 2
Location: Bangkok

PostPosted: Wed 13 Oct '10 2:46    Post subject: Bad file descriptor Reply with quote

I am trying to update text files in the root directory of my website using a Perl program in the public directory.

I can update files in the public directory with this same script but when I try in the root directory I get 'Bad file descriptor' as soon as I try to read in data. The files are text files set to 0666 permissions.

These problem files in my root directory are regularly read from by crontab.

Is there some sort of system like .htaccess that I need to configure?

Thanks for any help in this matter.

Peace from antares Confused
#############################################
Code to change to root directory:
chdir "/home/deliver";

Code to open the file:
open(DATABASE,"<database.txt") || die "Can't open db to read records for pwd check at profile update $!\n";

Code to access handle:
$active_file = "DATABASE";

Code to read:
read($active_file,$record,300);
Back to top
James Blond
Moderator


Joined: 19 Jan 2006
Posts: 7288
Location: Germany, Next to Hamburg

PostPosted: Wed 20 Oct '10 10:33    Post subject: Reply with quote

Is it right that there is a < in the file name? <database.txt
Back to top
VoodooMill



Joined: 11 Jan 2007
Posts: 60

PostPosted: Wed 20 Oct '10 19:19    Post subject: Re: Bad file descriptor Reply with quote

antares wrote:
I am trying to update text files in the root directory of my website using a Perl program in the public directory.

I can update files in the public directory with this same script but when I try in the root directory I get 'Bad file descriptor' as soon as I try to read in data. The files are text files set to 0666 permissions.

These problem files in my root directory are regularly read from by crontab.

Is there some sort of system like .htaccess that I need to configure?

Thanks for any help in this matter.

Peace from antares Confused
#############################################
Code to change to root directory:
chdir "/home/deliver";

Code to open the file:
open(DATABASE,"<database.txt") || die "Can't open db to read records for pwd check at profile update $!\n";

Code to access handle:
$active_file = "DATABASE";

Code to read:
read($active_file,$record,300);


I see this error once in a while on files I repeatedly open, however it doesn't seem to have a negative impact on my ability to use the file. because the only downside seems to be that error message I've not spent much time looking into it to get rid of it. As my other priorities subside and I find a solution I'll post it here.
Back to top
glsmith
Moderator


Joined: 16 Oct 2007
Posts: 2268
Location: Sun Diego, USA

PostPosted: Wed 20 Oct '10 21:42    Post subject: Reply with quote

Perl open for read
open(DATABASE,"database.txt") || die "Can't open db to read records for pwd check at profile update $!\n";

Perl open for write
open(DATABASE,">database.txt") || die "Can't open db to read records for pwd check at profile update $!\n";

Perl open for append
open(DATABASE,">>database.txt") || die "Can't open db to read records for pwd check at profile update $!\n";

James got it right, the < is the wrong direction
Back to top
antares



Joined: 13 Oct 2010
Posts: 2
Location: Bangkok

PostPosted: Thu 21 Oct '10 2:28    Post subject: Thanks for thoughts Reply with quote

Thank you for your thoughts on this, which BTW is still unresolved.

James Blond and gl smith - The < symbol means the file is being opened for input (read) only; it is not part of the file name. I believe the < is essential to read the file. Smile

Voodoo Mill - Yes, there may be something in that. I read about 'Bad ioctl for device' and that seems to work in that way: if you investigate the error when the file isn't being opened or closed you get the error, but if you investigate when the file is being opened it disappears. It seems it's not really a problem at all! Rolling Eyes

All - I have rewritten the code to this, which stops the error, but I still don't know why the first way doesn't work. TMTOWTDI rules OK!


$active_file = "DATABASE";

$fileto_open = "<database.txt";

open ($active_file,"$fileto_open") || die "Can't open $fileto_open to read customers' details in root area $!\n";
Back to top
glsmith
Moderator


Joined: 16 Oct 2007
Posts: 2268
Location: Sun Diego, USA

PostPosted: Sun 24 Oct '10 7:46    Post subject: Reply with quote

antares, you are correct as < is documented as being equal to no symbol and read mode. Next time I open a file I'll try it.
Back to top


Reply to topic   Topic: Bad file descriptor View previous topic :: View next topic
Post new topic   Forum Index -> Coding & Scripting Corner