Nashbar Skrevet 30. august 2009 Del Skrevet 30. august 2009 hei har en liten kodesnutt her jeg trenger forklaring på. hvorfor blir det slik at når jeg kjører dette programmet med * som første argument, blir ikke utskriften * men k istedet? jeg antar at det blir krøll med pekere her, men trenger litt god forklaring =) int main(int argc, char *argv[]) { cout << argv[1]<<endl; return 0; } Lenke til kommentar
GeirGrusom Skrevet 30. august 2009 Del Skrevet 30. august 2009 Hvis du bruker Linux: Dette er en feature/bug i designet i UNIX. I UNIX systemer er det shellet som bytter om * og lignende med en liste over filene i mappen. Så hvis du skriver ut alle elementene i argv skal du få en liste over alle filene i mappen. Lenke til kommentar
Nashbar Skrevet 30. august 2009 Forfatter Del Skrevet 30. august 2009 Urk! selvfølgelig, takk skal du ha =) Lenke til kommentar
zotbar1234 Skrevet 30. august 2009 Del Skrevet 30. august 2009 Dette er en feature/bug i designet i UNIX. Fantastisk. POSIX-compliance for et shell er blitt en bug i UNIX nå. Lenke til kommentar
GeirGrusom Skrevet 30. august 2009 Del Skrevet 30. august 2009 (endret) Feilen kommer opprinnelig fra UNIX, og er da følgelig også en del av POSIX. edit: og følgelig også i Linux. Endret 30. august 2009 av GeirGrusom Lenke til kommentar
zotbar1234 Skrevet 30. august 2009 Del Skrevet 30. august 2009 Feilen kommer opprinnelig fra UNIX, og er da følgelig også en del av POSIX.edit: og følgelig også i Linux. "Feilen" ja. Flott. Lenke til kommentar
GeirGrusom Skrevet 31. august 2009 Del Skrevet 31. august 2009 Hehe Er vel ikke en feil, men jeg synes det er et dårlig designvalg. Det hadde vært bedre om dette var en funksjon i programmeringsspråket fremfor at shellet gjør det. Et problem dette kan skape, er at dersom en lager en fil som heter -r (som er helt lovlig) og du deretter skriver rm * for å slette alle filene i mappen, så vil -r bli sett på som et programargument og ikke en fil, og dermed vil alle undermapper også bli slettet, men -r blir igjen. Er det en bug, eller en feature da? Lenke til kommentar
zotbar1234 Skrevet 31. august 2009 Del Skrevet 31. august 2009 Et problem dette kan skape, er at dersom en lager en fil som heter -r (som er helt lovlig) og du deretter skriver rm * for å slette alle filene i mappen, så vil -r bli sett på som et programargument og ikke en fil, og dermed vil alle undermapper også bli slettet, men -r blir igjen. Er det en bug, eller en feature da? Ingen av delene -- dette er feil bruk av shellet. Den rette framgangsmåten er selvsagt å bruke 'rm ./*'. For å ikke snakke om alle måtene programmene ville ha ekspandert * feil på. Lenke til kommentar
GeirGrusom Skrevet 31. august 2009 Del Skrevet 31. august 2009 Pøh, hvordan skal et program ekspandere * feil, hvis det hadde vært en systemkommando for å gjøre akkurat det? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå