Freopen Stdout Binære Alternativer


Åpner filen hvis navn er angitt i parameterfilnavnet og knytter det sammen med en strøm som kan identifiseres i fremtidige operasjoner av FIL-pekeren returnert. Operasjonene som er tillatt på strømmen og hvordan disse utføres, er definert av modusparameteren. Den returnerte strømmen er fullt buffert som standard hvis det ikke er kjent å ikke referere til en interaktiv enhet (se setbuf). Den returnerte pekeren kan skilles fra filen ved å ringe fclose eller freopen. Alle åpne filer lukkes automatisk ved normal programavslutning. Det løpende miljøet støtter minst FOPENMAX-filer åpne samtidig. Parametre filnavn C-streng som inneholder navnet på filen som skal åpnes. Dens verdi skal følge filnavnspesifikasjonene for løpemiljøet og kan inneholde en sti (hvis den støttes av systemet). modus C-streng som inneholder en filtilgangsmodus. Det kan være: Les: Åpne fil for inngangsoperasjoner. Filen må eksistere. skriv: Lag en tom fil for utdataoperasjoner. Hvis en fil med samme navn allerede eksisterer, blir innholdet kassert og filen behandles som en ny, tom fil. legg til: Åpne fil for utdata på slutten av en fil. Utdataoperasjoner skriver alltid data på slutten av filen, og utvider den. Reposisjoneringsoperasjoner (fseek. Fsetpos. Tilbakespoling) ignoreres. Filen er opprettet hvis den ikke eksisterer. readupdate: Åpne en fil for oppdatering (både for inngang og utgang). Filen må eksistere. writeupdate: Lag en tom fil og åpne den for oppdatering (både for inngang og utgang). Hvis en fil med samme navn allerede finnes, blir innholdet kassert og filen behandles som en ny, tom fil. Appendupdate: Åpne en fil for oppdatering (både for inngang og utdata) med alle utdataoperasjoner skriving data på slutten av filen. Reposisjoneringsoperasjoner (fseek. Fsetpos. Tilbakespoling) påvirker neste inngangsoperasjoner, men utdataoperasjoner flytter posisjonen tilbake til slutten av filen. Filen er opprettet hvis den ikke eksisterer. Med modus-spesifiseringene ovenfor er filen åpen som en tekstfil. For å åpne en fil som en binær fil. en b-karakter må inkluderes i modusstrengen. Denne tilleggsbildet kan enten legges til i enden av strengen (dermed gjøres følgende sammensatte moduser: rb, wb, ab, rb, wb, ab) eller settes inn mellom brevet og tegnet for blandemodiene (rb, wb, ab). Den nye C-standarden (C2011, som ikke er en del av C), legger til en ny standard underspesifikator (x), som kan legges til en hvilken som helst w spesifier (for å danne wx. Wbx, wx eller wbxwbx). Denne underspesifikasjonen tvinger funksjonen til å mislykkes hvis filen eksisterer, i stedet for å overskrive den. Hvis flere tegn følger sekvensen, avhenger oppførselen av implementeringen av biblioteket: Noen implementeringer kan ignorere flere tegn, slik at for eksempel en ekstra t (noen ganger brukes til å uttrykke en tekstfil eksplisitt) aksepteres. På enkelte biblioteksimplementeringer kan åpning eller opprettelse av en tekstfil med oppdateringsmodus behandle strømmen i stedet som en binær fil. Tekstfiler er filer som inneholder sekvenser av tekstlinjer. Avhengig av miljøet der applikasjonen kjører, kan det forekomme en spesiell karakterkonvertering i inputoutput-operasjoner i tekstmodus for å tilpasse dem til et systemspesifikt tekstfilformat. Selv om det ikke skjer noen konverteringer i enkelte miljøer, og både tekstfiler og binære filer behandles på samme måte, bruker den aktuelle modusen økt portabilitet. For filer som er åpne for oppdatering (de som inneholder et tegn), som både inngangs - og utgangsoperasjoner er tillatt, skal strømmen skylles (fflush) eller reposisjoneres (fseek. Fsetpos. Tilbakespoling) før en leseoperasjon som følger en skriveoperasjon. Strømmen skal reposisjoneres (fseek. Fsetpos. Tilbakespoling) før en skriveoperasjon som følger en lesoperasjon (hver gang operasjonen ikke nå slutten av filen). Returner verdi Hvis filen er åpnet, returnerer funksjonen en peker til en FILE-objekt som kan brukes til å identifisere strømmen i fremtidige operasjoner. Ellers returneres null nullpeker. På de fleste biblioteksimplementeringer er også errno-variabelen satt til en systemspesifikk feilkode ved feil. Det enkle svaret er nei. Modusen bestemmes når iostream-objektet er konstruert, og kan ikke endres senere. Noen implementeringer kan gi et middel til å gjøre det senere, men dette er ikke standardisert. På enkelte implementeringer kan det være at en freopen på stdout endrer modusen, selv om jeg formelt mener at dette er forbudt i C. (Det er implementering definert i C.) Og tilsynelatende virker det ikke på implementeringen din. Du har best mulighet til å finne ut hvordan systemet navngir konsollenheten (devtty under Unix CONS. Jeg tror, ​​under Windows), åpne den i ønsket modus og send ut til den. svaret apr 16 14 kl 11: 34freopen (3) - Linux man side fopen, fdopen, freopen - stream åpne funksjoner Funksjonstest Makro Krav til glibc (se featuretestmacros (7)): fdopen (): POSIXCSOURCE gt 1 XOPENSOURCE POSIXSOURCE Beskrivelse Fopen () - funksjonen åpner filen hvis navn er strengen peket på ved hjelp av sti og forbinder en strøm med den. Argumentmodusen peker på en streng som begynner med en av følgende sekvenser (muligens etterfulgt av flere tegn, som beskrevet nedenfor): r Åpne tekstfil for lesing. Strømmen er plassert i begynnelsen av filen. Åpent for lesing og skriving. Strømmen er plassert i begynnelsen av filen. Avkort fil til null lengde eller opprett tekstfil for skriving. Strømmen er plassert i begynnelsen av filen. Åpent for lesing og skriving. Filen er opprettet hvis den ikke eksisterer, ellers blir den avkortet. Strømmen er plassert i begynnelsen av filen. Åpne for vedlegg (skriving på slutten av filen). Filen er opprettet hvis den ikke eksisterer. Strømmen er plassert på slutten av filen. Åpne for å lese og legge til (skrive på slutten av filen). Filen er opprettet hvis den ikke eksisterer. Den opprinnelige filposisjonen for lesing er i begynnelsen av filen, men produksjonen er alltid lagt til slutten av filen. Modusstrengen kan også inkludere bokstaven b enten som et siste tegn eller som et tegn mellom tegnene i noen av de to tegnstrengene som er beskrevet ovenfor. Dette er strengt for kompatibilitet med C89 og har ingen effekt b blir ignorert på alle POSIX-kompatible systemer, inkludert Linux. (Andre systemer kan behandle tekstfiler og binære filer på en annen måte, og legge til b kan være en god ide hvis du gjør IO til en binær fil og forventer at programmet ditt kan sendes til ikke-UNIX-miljøer.) Se NOTER nedenfor for detaljer om glibc forlengelser for modus. Eventuelle opprettede filer vil ha modus SIRUSR SIWUSR SIRGRP SIWGRP SIROTH SIWOTH (0666), som endret av prosessens umask verdi (se umask (2)). Les og skriv kan blandes på readwrite-strømmer i hvilken som helst rekkefølge. Merk at ANSI C krever at en filposisjoneringsfunksjon griper inn mellom utgang og inngang, med mindre en inngangsoperasjon møter slutten av filen. (Hvis denne betingelsen ikke er oppfylt, kan en lesing returnere resultatet av skriving annet enn det siste.) Derfor er det god praksis (og faktisk noen ganger nødvendig under Linux) å sette en fseek (3) eller fgetpos (3) ) operasjon mellom skrive og lese operasjoner på en slik strøm. Denne operasjonen kan være en tydelig no-op (som i fseek (.0L, SEEKCUR) krevde sin synkroniseringseffekt. Å åpne en fil i append-modus (a som første tegn av modus) fører til at alle etterfølgende skriveoperasjoner til denne strømmen til forekommer i slutten av filen, som om det var før samtalen: Funksjonen fdopen () knytter en strøm med den eksisterende filbeskrivelsen, fd. Modus for strømmen (en av verdiene r, r, w, w, a, a) må være kompatibel med modusen for filbeskrivelsen. Filposisjonsindikatoren for den nye strømmen er satt til den som tilhører fd., og feil - og slutt-filindikatorene blir slettet. Modus w eller w forårsaker ikke trunking Filen beskrives ikke, og lukkes når strømmen som er opprettet av fdopen () er lukket. Resultatet av å bruke fdopen () til et delt minneobjekt er udefinert. Freopen () - funksjonen åpner filen hvis navn er strengen peket på av sti og medarbeidere strømmen pekte på ved å streame med den. Den opprinnelige strømmen (hvis den eksisterer) er stengt. Modusargumentet brukes som i fopen () - funksjonen. Den primære bruken av freopen () - funksjonen er å endre filen som er tilknyttet en standard tekststrøm (stderr. Stdin. Eller stdout). Returner verdi Ved vellykket fullføring fopen (), fdopen () og freopen () returnerer en FILE-peker. Ellers returneres NULL og errno er angitt for å indikere feilen. Modusen som ble gitt til fopen (), fdopen () eller freopen () var ugyldig. Funksjonene fopen (), fdopen () og freopen () kan også mislykkes og angi errno for noen av feilene som er angitt for rutine malloc (3). Funksjonen fopen () kan også mislykkes og angi errno for noen av feilene angitt for rutinemessig åpen (2). Funksjonen fdopen () kan også mislykkes og angi errno for noen av feilene som er angitt for rutinemessig fcntl (2). Funksjonen freopen () kan også mislykkes og angi errno for noen av feilene som er angitt for rutinene åpne (2), fclose (3) og fflush (3). Overholder Fopen () og freopen () - funksjonene stemmer overens med C89. Funksjonen fdopen () samsvarer med POSIX.1-1990. Glibc-notater GNU C-biblioteket tillater følgende utvidelser for strengen som er angitt i modus. c (siden glibc 2.3.3) Ikke gjør den åpne operasjonen eller etterfølgende lese - og skriveoperasjoner, trådavbruddspunkter. Dette flagget ignoreres for fdopen (). e (siden glibc 2.7) Åpne filen med OCLOEXEC-flagget. Se åpen (2) for mer informasjon. Dette flagget ignoreres for fdopen (). m (siden glibc 2.3) Forsøk å få tilgang til filen ved hjelp av mmap (2), i stedet for IO systemanrop (les (2), skriv (2)). For tiden er det bare forsøk på bruk av mmap (2) for en fil åpnet for lesing. x Åpne filen utelukkende (som OEXCL-flagget av åpent (2)). Hvis filen allerede eksisterer, mislykkes fopen () og setter errno til EEXIST. Dette flagget ignoreres for fdopen (). I tillegg til de ovennevnte tegnene støtter fopen () og freopen () følgende syntaks i modus. Gitt streng er tatt som navnet på et kodet tegnsett og strømmen er merket som brede. Deretter konverterer interne konverteringsfunksjoner IO til og fra tegnsettstrengen. Hvis ccs strengsyntaxen ikke er spesifisert, bestemmes bredden av strømmen av den første filoperasjonen. Hvis denne operasjonen er en brede tegnoperasjon, er strømmen merket bredt orienterte, og funksjoner som skal konverteres til det kodede tegnsettet er lastet. Når du analyserer for individuelle flaggfigurer i modus (dvs. tegnene som går foran ccs-spesifikasjonen), begrenser glibc-implementeringen av fopen () og freopen () antallet tegn som er undersøkt i modus til 7 (eller i glibc-versjoner før 2,14 til 6 , som ikke var nok til å inkludere mulige spesifikasjoner som rbcmxe). Den nåværende implementeringen av fdopen () analyserer maksimalt 5 tegn i modus. Referert av

Comments

Popular Posts