FORTRAN I/O channel => file descriptor..how??

Kenneth Almquist ka at cs.washington.edu
Fri Mar 9 15:09:26 AEST 1990


chee13h at elroy.uh.edu (A JETSON News User) writes:
> 	Hi, I am porting a FORTRAN application to the DG AVION unix system and
> have run up against this problem. The FORTRAN(alas!) compile supplied by them
> doesnot provide the fortran channel to file descriptor conversion. I need
> this desperately to use the file locking mechanishms. Can anybody suggest a
> way to hack an implementation to achieve the above??
>
> 	I have come up with the following solution ::
>
> 	Convert the filename to an inode using stat() and try to access the
> file descriptor table and search. However, how do I access this table? I do
> not seem to find a functional interface to this table.

Your idea is right, but there is no routine specificly designed to access
the file table.  However, fstat will do what you want:

	struct stat statb, fstatb;
	int fd;

	if (stat(filename, &statb) < 0)
		die("stat call failed");
	for (fd = 0 ; ; fd++) {
		if (fd >= NOFILE)
			die("file not open!");
		if (fstat(fd, &fstatb) >= 0
		 && fstatb.st_dev == statb.st_dev
		 && fstatb.st_ino == statb.st_ino)
			break;	/* file descriptor found */
	}

The preprocessor variable NOFILE is the maximum number of open files
your system supports.  On many systems this is defined in sys/param.h.
				Kenneth Almquist



More information about the Comp.unix.wizards mailing list