stdin, stdout, stderr
Fuzesi Arnold
arno at externet.hu
Mon Apr 18 13:29:44 CEST 2005
Sziasztok!
Rászánnám magam, hogy a konyvtari stdio muveletekkel kezeljek file-t uC-n.
(fopen, fclose, fseek,fpos, stb.)
De lassan haladok elore. :(
Makro hegyek vannak definialva a h file-okban, es kicsit atlathatatlan
szamomra. Leginkabb azert mert nem ismerem az alap filozofiajat az stdio
kezelesnek.
---
A legutolso elemi fuggveny megkapja a "handle" nevu integert , illetve a
byte-ot amit a bufferba kell tenni.
int (__writechar)(int Handle, unsigned char c)
{
if (Handle == 1 || Handle == 2)
return __putchar(c); //__putchar az altalam definialt
fuggveny amelyik tenylegesen kiirja az adott byte-ot.
else
return -1;
}
A handle az stdin, stdout, stderr, stb azonositoja lenne?
--
Talaltam egy ilyet:
extern FILE *stdin, *stdout, *stderr; /*struct _FILET _Stdin, _Stdout,
_Stderr; */
Azaz egy kulso FILE tipusu pointerek az emlitett stream-ek.
De a FILE tipus deklaraciojat egyszeruen nem talalom.
Viszont gyanitom ebbol szarmazik:
/* FILE structure for library with buffered IO. Moved here from stdio.h */
typedef struct __Filet_BIO
{
unsigned short _Mode;
short _Handle;
unsigned char *_Buf,
*_Bend,
*_Next;
unsigned char *_Rend,
*_Wend,
*_Rback;
_Wchart *_WRback,
_WBack[2];
unsigned char *_Rsave,
*_WRend,
*_WWend;
struct _Mbstatet _Wstate;
char *_Tmpnam;
unsigned char _Back[2],
_Cbuf;
} _Filet_BIO;
/* FILE structure for library without buffered IO. */
typedef struct __Filet_NBIO
{
struct __Filet_NBIO *_Next;
unsigned short _Mode;
short _Handle;
union
{
int _UnputBuf;
_Wchart _WUnputBuf;
};
char *_Tmpnam;
#ifndef __NO_MULTIBYTE
struct _Mbstatet _Wstate;
#endif /* __NO_MULTIBYTE */
} _Filet_NBIO;
/* declarations */
Valakinek ismeros ez? :)
Emleget POSIX szabvanybeli dolgokat a forras, elvben az kene legyen...
Ez lenne maga a FILE tipus?
Valaki aki "vágja" ezt a temat legyszi irjon mar 1-2 mondatot errol az
stdio-s tortenetrol.
Linux-os programozo kollegaknak gondolom csipobol megy....
Ezer koszonet,
Arnold
More information about the Elektro
mailing list