chris@mimsy.umd.edu (Chris Torek) (10/06/90)
In article <121948@linus.mitre.org> cazier@mbunix.mitre.org (Cazier) writes: >How would you legally set a file descriptor to some predetermined value >as can be done in FORTRAN. For example, I can OPEN(8) or set a value >IN=8 then OPEN(IN) -- and subsequently WRITE(8) as desired. What's the >equivalent in C? I cannot figure out what this question is supposed to mean. The only reason one might want to write IN=8 and then eventually OPEN(IN, ...) in FORTRAN is because the language's I/O statements require numbers as arguments and, as a result, people tend to hardcode specific numbers (such as 5 and 6 for input and output). The C language's I/O functions supplied as part of any hosted implementation do not take numeric values, but rather values of type `FILE *'. There are only three predefined `FILE *' values, namely stdin, stdout, and stderr. Thus, there are two possible answers: 1. There is no equivalent because the equivalent of write(8) does not occur. The only `constants' that can be hardcoded into I/O calls are stdin, stdout, and stderr. A program that opens an input file does this with code of the form FILE *f = fopen(...); if (f == NULL) handle_error_no_such_file(); ... do I/O using f, or return f to caller, or whatever ... 2. The equivalent is freopen, which takes a currently-open file, closes it, opens a new one, and puts all the relevant stuff under the same `FILE *' value so that I/O operations on that `FILE *' refer to the new file. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 405 2750) Domain: chris@cs.umd.edu Path: uunet!mimsy!chris