C-programmering i Linux, macOS, BSD och Solaris
C-programmering i Linux, macOS, BSD och Solaris lär först ut grunderna i C-programmering så att vi har en stabil grund att stå på. Denna del vänder sig mot de som är nya på C-programmering eller för de som behöver fräscha upp sina C-kunskaper. Därefter börjar vi att programmera alltmer mot UNIX-s... Lue lisää
C-programmering i Linux, macOS, BSD och Solaris lär först ut grunderna i C-programmering så att vi har en stabil grund att stå på. Denna del vänder sig mot de som är nya på C-programmering eller för de som behöver fräscha upp sina C-kunskaper. Därefter börjar vi att programmera alltmer mot UNIX-s... Lue lisää
-
Tuotekuvaus
C-programmering i Linux, macOS, BSD och Solaris lär först ut grunderna i C-programmering så att vi har en stabil grund att stå på. Denna del vänder sig mot de som är nya på C-programmering eller för de som behöver fräscha upp sina C-kunskaper. Därefter börjar vi att programmera alltmer mot UNIX-system med hjälp av bland annat systemanrop. Vi lär oss att skapa och använda demoner, standard input- och output, filrättigheter, FIFO, processhantering, make-filer, meddelandeköer med mera.Vi får också lära oss hur man kopplar samman flera program med hjälp av rörledningar och skalskript. Mot slutet av boken tittar vi på hur man använder felsökningsverktyg som GDB, LLDB och Valgrind.
Grundtanken med boken är att du som läsare bara ska behöva en enda bok för att komma igång att utveckla program och verktyg för UNIX-system. Boken är uppbyggd på devisen att lära genom exempel. I boken finns över 160 exempelprogram, både stora och små. Efter varje kapitel finns dessutom övningsuppgifter, så att du som läsare ska kunna arbeta med boken på egen hand.
I denna andra utgåva av boken har stora delar skrivits om för att göra boken än mer lättläst och relevant. En rad uppdateringar och förbättringar har också gjorts i texten.
Jack-Benny Persson har många års erfarenhet av främst Linux- och FreeBSD-system, men också av programmering och skripting i olika former. Intresset för datorer började redan i början av 90-talet och har sedan dess bara fortsatt. På gymnasiet läste han el & elektronik och har senast studerat till Linux Systemspecialist vid EC-Utbildning. Han har tidigare gett ut boken "Grunderna i programmering". Han är idag ägare av CyberInfo Sverige. -
Tuotetiedot
- Kustantaja / Valmistaja CyberInfo Sverige
- ISBN 9789198330045
- Tuotekoodi 9789198330045
- Kirjoittajat Jack-Benny Persson
- Kieli ruotsi
- Thema-luokitus Tiedonkäsittely- ja tietotekniikka
- Ilmestymispäivä 14.05.2019
- Vuosi 2019
- Painos 2
- Sivumäärä 431
- Asiasanat Linux; macOS; FreeBSD; OpenBSD; Solaris; UNIX; programmering; C; LLDB; GDB; Valgrind; make; funktioner; minneshantering; datatyper; utveckling; C-programmering
- Avainsanat Linux; macOS; FreeBSD; OpenBSD; Solaris; UNIX; programmering; C; LLDB; GDB; Valgrind; make; funktioner; minneshantering; datatyper; utveckling; C-programmering
- Pituus (mm) 230
- Leveys (mm) 170
- Korkeus (mm) 29
- Paino (g) 763
-
Sisältö
1 Introduktion 15
1 Introduktion 15
1.1 UNIX-system? 16
1.1 UNIX-system? 16
1.2 Bokens exempelprogram 16
1.2 Bokens exempelprogram 16
1.3 Andra utgåvan 17
1.3 Andra utgåvan 17
2 Kort historia 19
2 Kort historia 19
2.1 Högnivåspråken utvecklas 22
2.1 Högnivåspråken utvecklas 22
2.2 Andra UNIX-liknande system 22
2.2 Andra UNIX-liknande system 22
3 Installera nödvändiga verktyg 25
3 Installera nödvändiga verktyg 25
3.1 Navigera i de inbygga man-sidorna 26
3.1 Navigera i de inbygga man-sidorna 26
4 Introduktion till C 29
4 Introduktion till C 29
4.1 Ett första exempel 31
4.1 Ett första exempel 31
4.2 Ett exempel med indata 35
4.2 Ett exempel med indata 35
4.2.1 Första varianten 35
4.2.1 Första varianten 35
4.2.1.1 Spill över med flit 38
4.2.1.1 Spill över med flit 38
4.2.2 Andra varianten 39
4.2.2 Andra varianten 39
4.3 Övningsuppgifter 44
4.3 Övningsuppgifter 44
5 Variabler och datatyper i C 45
5 Variabler och datatyper i C 45
5.1 Variabelnamn 46
5.1 Variabelnamn 46
5.2 Heltal 48
5.2 Heltal 48
5.2.1 Portabilitet 50
5.2.1 Portabilitet 50
5.2.2 Signed och unsigned int 53
5.2.2 Signed och unsigned int 53
5.2.3 Tecken, char 55
5.2.3 Tecken, char 55
5.3 Flyttal 56
5.3 Flyttal 56
5.4 Fält av tal 57
5.4 Fält av tal 57
5.5 Uppräkningstypen, enum 58
5.5 Uppräkningstypen, enum 58
5.6 Konstruktioner, struct 59
5.6 Konstruktioner, struct 59
5.6.1 Storleken på konstruktioner 64
5.6.1 Storleken på konstruktioner 64
5.7 Egna datatyper med typedef 66
5.7 Egna datatyper med typedef 66
5.8 Unioner 70
5.8 Unioner 70
5.9 Konstanter 72
5.9 Konstanter 72
5.10 Omvandla mellan olika typer 75
5.10 Omvandla mellan olika typer 75
5.11 Aritmetik 77
5.11 Aritmetik 77
5.11.1 Modulo-operatorn 80
5.11.1 Modulo-operatorn 80
5.12 Övningsuppgifter 82
5.12 Övningsuppgifter 82
6 Loopar & villkor 85
6 Loopar & villkor 85
6.1 Jämförelseoperatorer 85
6.1 Jämförelseoperatorer 85
6.2 Olika villkorssatser i C 86
6.2 Olika villkorssatser i C 86
6.3 if-satsen 86
6.3 if-satsen 86
6.4 Logiska operatorer 91
6.4 Logiska operatorer 91
6.5 Nästlade if-satser 93
6.5 Nästlade if-satser 93
6.6 Jämföra strängar 95
6.6 Jämföra strängar 95
6.7 Switch-satsen 97
6.7 Switch-satsen 97
6.8 Loopar 99
6.8 Loopar 99
6.8.1 for-loopen 99
6.8.1 for-loopen 99
6.8.1.1 Utesluta delar i for-loopen 103
6.8.1.1 Utesluta delar i for-loopen 103
6.8.2 while-loopen 104
6.8.2 while-loopen 104
6.8.3 do while 106
6.8.3 do while 106
6.8.4 Avbryta en loop med break 108
6.8.4 Avbryta en loop med break 108
6.8.5 Hoppa över iterationer med continue 110
6.8.5 Hoppa över iterationer med continue 110
6.9 Övningsuppgifter 111
6.9 Övningsuppgifter 111
7 Bitvisa operationer 113
7 Bitvisa operationer 113
7.1 Bitvis OCH & bitvis ELLER 113
7.1 Bitvis OCH & bitvis ELLER 113
7.1.1 Exklusiv ELLER 118
7.1.1 Exklusiv ELLER 118
7.2 Bitvis skiftning 118
7.2 Bitvis skiftning 118
7.3 Negation 119
7.3 Negation 119
7.4 Övningsuppgifter 120
7.4 Övningsuppgifter 120
8 Funktioner, del 1 123
8 Funktioner, del 1 123
8.1 En första egen funktion 125
8.1 En första egen funktion 125
8.2 Funktionsprototyp och funktionskropp 126
8.2 Funktionsprototyp och funktionskropp 126
8.3 Returtyper och argument 127
8.3 Returtyper och argument 127
8.4 Placera funktioner i separata filer 131
8.4 Placera funktioner i separata filer 131
8.5 Övningsuppgifter 133
8.5 Övningsuppgifter 133
9 Minneshantering 135
9 Minneshantering 135
9.1 Heap och stack 135
9.1 Heap och stack 135
9.1.1 BSS, data och text 137
9.1.1 BSS, data och text 137
9.1.2 Stack frames 138
9.1.2 Stack frames 138
9.2 Scope 140
9.2 Scope 140
9.2.1 Block-scope 140
9.2.1 Block-scope 140
9.2.1.1 Global 142
9.2.1.1 Global 142
9.2.1.2 Static 144
9.2.1.2 Static 144
9.2.2 Filbaserat scope 146
9.2.2 Filbaserat scope 146
9.3 Dynamisk minneshantering 148
9.3 Dynamisk minneshantering 148
9.4 Allting handlar om null-tecknet 153
9.4 Allting handlar om null-tecknet 153
9.5 Övningsuppgifter 159
9.5 Övningsuppgifter 159
10 Pekare 163
10 Pekare 163
10.1 Adressen till teckenfält 165
10.1 Adressen till teckenfält 165
10.2 Skapa pekare 167
10.2 Skapa pekare 167
10.3 Mer om fält, strängar och pekare 170
10.3 Mer om fält, strängar och pekare 170
10.3.1 Andra typer av fält 173
10.3.1 Andra typer av fält 173
10.4 Pekare till pekare 175
10.4 Pekare till pekare 175
10.4.1 Använda pekare till pekare för fält 175
10.4.1 Använda pekare till pekare för fält 175
10.5 Övningsuppgifter 178
10.5 Övningsuppgifter 178
11 Funktioner, del 2 179
11 Funktioner, del 2 179
11.1 main() 179
11.1 main() 179
11.1.1 Behandla argument till programmet 181
11.1.1 Behandla argument till programmet 181
11.1.1.1 Förklaring av resten av simple-ls 189
11.1.1.1 Förklaring av resten av simple-ls 189
11.2 Fält som argument och retur 190
11.2 Fält som argument och retur 190
11.2.1 Fält som argument 190
11.2.1 Fält som argument 190
11.2.2 Returnera ett fält 192
11.2.2 Returnera ett fält 192
11.2.3 Call by reference 194
11.2.3 Call by reference 194
11.3 Övningsuppgifter 195
11.3 Övningsuppgifter 195
12 Filhantering 197
12 Filhantering 197
12.1 Strömmar och fildeskriptorer 198
12.1 Strömmar och fildeskriptorer 198
12.2 Skriva till filer med filströmmar 198
12.2 Skriva till filer med filströmmar 198
12.3 Läsa från filer med filströmmar 201
12.3 Läsa från filer med filströmmar 201
12.3.1 Läsa in specifikt innehåll 207
12.3.1 Läsa in specifikt innehåll 207
12.4 stdin, stdout och stderr 208
12.4 stdin, stdout och stderr 208
12.5 Förflytta sig i en fil 210
12.5 Förflytta sig i en fil 210
12.6 Skriva och läsa med fildeskriptorer 211
12.6 Skriva och läsa med fildeskriptorer 211
12.7 Skriva och läsa binärdata 213
12.7 Skriva och läsa binärdata 213
12.7.1 Skriva och läsa en enstaka variabel 214
12.7.1 Skriva och läsa en enstaka variabel 214
12.7.2 Skriva fält till en fil 216
12.7.2 Skriva fält till en fil 216
12.7.2.1 Blanda olika datatyper 219
12.7.2.1 Blanda olika datatyper 219
12.7.3 Lagra strukturer i filer 220
12.7.3 Lagra strukturer i filer 220
12.7.4 Ett komplett lagerhanteringsprogram 223
12.7.4 Ett komplett lagerhanteringsprogram 223
12.8 Övningsuppgifter 234
12.8 Övningsuppgifter 234
13 Introduktion till systemanrop 235
13 Introduktion till systemanrop 235
13.1 Filsystem och rättigheter 238
13.1 Filsystem och rättigheter 238
13.1.1 Rättigheter som oktala tal 240
13.1.1 Rättigheter som oktala tal 240
13.1.2 umask 241
13.1.2 umask 241
13.2 Två exempelprogram 243
13.2 Två exempelprogram 243
13.2.1 Enkelt program för filinformation 243
13.2.1 Enkelt program för filinformation 243
13.2.2 Program för att ändra ägaren av en fil 244
13.2.2 Program för att ändra ägaren av en fil 244
13.3 Systemanrop, datatyper och C-standarder 246
13.3 Systemanrop, datatyper och C-standarder 246
13.4 Felhantering och errno 249
13.4 Felhantering och errno 249
13.5 En egen version av touch 254
13.5 En egen version av touch 254
13.6 Många fler systemanrop 255
13.6 Många fler systemanrop 255
13.7 Övningsuppgifter 260
13.7 Övningsuppgifter 260
14 Kommunicera med skalet och andra program 163
14 Kommunicera med skalet och andra program 163
14.1 Rörledningar 265
14.1 Rörledningar 265
14.2 Returkoder 268
14.2 Returkoder 268
14.3 Omdirigera data till och från filer 269
14.3 Omdirigera data till och från filer 269
14.3.1 Skriva till stderr i C 272
14.3.1 Skriva till stderr i C 272
14.4 Knyta samman returkoder, rörledningar och omdirigeringar 273
14.4 Knyta samman returkoder, rörledningar och omdirigeringar 273
14.5 Miljövariabler 277
14.5 Miljövariabler 277
14.5.1 Läsa och sätta miljövariabler i C 279
14.5.1 Läsa och sätta miljövariabler i C 279
14.6 Övningsuppgifter 281
14.6 Övningsuppgifter 281
15 Kompilatorn, objektfiler och make 283
15 Kompilatorn, objektfiler och make 283
15.1 De fyra stegen 283
15.1 De fyra stegen 283
15.1.1 Preprocessorn 285
15.1.1 Preprocessorn 285
15.1.2 Kompilering 286
15.1.2 Kompilering 286
15.1.3 Assembly 288
15.1.3 Assembly 288
15.1.4 Linker 288
15.1.4 Linker 288
15.2 Ett par nyttiga flaggor 289
15.2 Ett par nyttiga flaggor 289
15.3 Make 290
15.3 Make 290
15.3.1 En Makefile för ett projekt 291
15.3.1 En Makefile för ett projekt 291
15.3.1.1 En smartare Makefile 297
15.3.1.1 En smartare Makefile 297
15.3.1.2 Fler variabler och mål 299
15.3.1.2 Fler variabler och mål 299
15.4 Delade bibliotek 301
15.4 Delade bibliotek 301
15.4.1 Statiska bibliotek 302
15.4.1 Statiska bibliotek 302
15.4.2 Dynamiska bibliotek 305
15.4.2 Dynamiska bibliotek 305
15.4.2.1 Titta i det dynamiska biblioteket 306
15.4.2.1 Titta i det dynamiska biblioteket 306
15.4.2.2 Installera biblioteket i systemet 307
15.4.2.2 Installera biblioteket i systemet 307
15.4.2.3 Använda biblioteket i ett program 308
15.4.2.3 Använda biblioteket i ett program 308
15.4.2.4 macOS 309
15.4.2.4 macOS 309
15.4.2.5 Använda tredjepartsbibliotek 312
15.4.2.5 Använda tredjepartsbibliotek 312
15.5 Övningsuppgifter 312
15.5 Övningsuppgifter 312
16 Processer, demoner, barn och föräldrar 315
16 Processer, demoner, barn och föräldrar 315
16.1 Introduktion till exec() 321
16.1 Introduktion till exec() 321
16.2 Introduktion till fork() 323
16.2 Introduktion till fork() 323
16.2.1 Zombie-processer 327
16.2.1 Zombie-processer 327
16.3 system() 329
16.3 system() 329
16.4 Demoner 330
16.4 Demoner 330
16.5 Övningsuppgifter 333
16.5 Övningsuppgifter 333
17 IPC 337
17 IPC 337
17.1 Signalhantering 338
17.1 Signalhantering 338
17.1.1 Utöka demonen med signalhanterare 339
17.1.1 Utöka demonen med signalhanterare 339
17.1.1.1 Utöka med ytterligare signalhanterare 343
17.1.1.1 Utöka med ytterligare signalhanterare 343
17.1.1.2 Utöka med ett klientprogram 347
17.1.1.2 Utöka med ett klientprogram 347
17.2 Pipes (rörledningar) 350
17.2 Pipes (rörledningar) 350
17.3 FIFO (namngivna rörledningar) 351
17.3 FIFO (namngivna rörledningar) 351
17.3.1 C och FIFO 355
17.3.1 C och FIFO 355
17.4 Meddelandeköer 358
17.4 Meddelandeköer 358
17.5 Övningsuppgifter 364
17.5 Övningsuppgifter 364
18 Felsökning 367
18 Felsökning 367
18.1 GDB och LLDB 368
18.1 GDB och LLDB 368
18.1.1 Installera GDB / LLDB 369
18.1.1 Installera GDB / LLDB 369
18.1.2 Stega igenom ett enkelt program 369
18.1.2 Stega igenom ett enkelt program 369
18.1.3 Övervaka variabler 373
18.1.3 Övervaka variabler 373
18.1.4 Modifiera variabler under körning 376
18.1.4 Modifiera variabler under körning 376
18.1.5 Program med flera funktioner och argument 376
18.1.5 Program med flera funktioner och argument 376
18.1.6 Titta i minnesadresser 379
18.1.6 Titta i minnesadresser 379
18.1.7 Undersöka minnet på djupet 381
18.1.7 Undersöka minnet på djupet 381
18.1.8 Felsöka barnprocesser 384
18.1.8 Felsöka barnprocesser 384
18.1.8.1 GDB 385
18.1.8.1 GDB 385
18.1.8.2 LLDB 386
18.1.8.2 LLDB 386
18.2 Valgrind 389
18.2 Valgrind 389
18.2.1 Installera Valgrind 389
18.2.1 Installera Valgrind 389
18.2.2 Använda Valgrind 391
18.2.2 Använda Valgrind 391
18.2.3 Mer svårupptäckta minnesproblem 395
18.2.3 Mer svårupptäckta minnesproblem 395
18.3 Övningsuppgifter 399
18.3 Övningsuppgifter 399
19 Avslutning 401
19 Avslutning 401
Appendix A (ASCII-tabell) 403
Appendix A (ASCII-tabell) 403
Appendix B (Talsystem) 409
Appendix B (Talsystem) 409
Bitar, bytes och det binära talsystemet 409
Bitar, bytes och det binära talsystemet 409
Omvandla mellan binärt och decimalt 411
Omvandla mellan binärt och decimalt 411
Hexadecimala talsystemet 412
Hexadecimala talsystemet 412
Till och från binärt 413
Till och från binärt 413
Hexadecimalt till decimalt 414
Hexadecimalt till decimalt 414
Räkna ut större och mer komplicerade tal 418
Räkna ut större och mer komplicerade tal 418
Oktala talsystemet 418
Oktala talsystemet 418
Till och från binärt 419
Till och från binärt 419
Oktalt till decimalt 420
Oktalt till decimalt 420
Källor 423
Källor 423
- Tuotemuoto Pehmeäkantinen kirja
- ALV 10,0%
-
UKK
-
Toimitus
Tarjoamme tilauksiin seuraavat toimitustavat:
Myymälänouto: 0 €
Matkahuolto noutopiste: 4,90 €
Matkahuolto kotijakelu: 11,90 €
Posti pikkupaketti: 3,90 €
Posti noutopiste tai automaatti 4,90 €
Posti kotiinkuljetus 10,90 €
Postnord automaatti tai noutopiste: 4,90 €
Lisäksi toimitustapana saatavilla vain yritysasiakkaillemme:
Postnord Yrityspaketti: 14,90 € -
Maksaminen
Verkkokaupassamme on käytössä seuraavat maksutavat:
Mobiilimaksutavat:
MobilePay, Siirto, Apple Pay, Google Pay, Masterpass
Pankkimaksutavat:
Nordea, Danske Bank, POP Pankki, Säästöpankki, Oma Sp, Ålansbanken, OP, Handelsbanken, Aktia
Korttimaksutavat:
Visa, Visa Electron, Mastercard, American Express
Lasku- ja osamaksutavat:
Walley-lasku kuluttajille ja Walley- yrityslasku yrityksille -
Palautus
Verkkokaupasta ostetuilla fyysisillä tuotteilla on 14 päivän palautusoikeus tilauksen vastaanottamisesta. Myymälästä ostetuilla fyysisillä tuotteilla on 14 päivän vaihto- ja palautusoikeus. Palauttaminen on ilmaista. Lue lisää palautuksista.
-
Tämä tuote kuuluu tuoteryhmiin
Tuotearvostelut Suomalainen.comissa
Tutustu tuotearvostelujen käytäntöihin ja ehtoihin ennen kuin jätät arvostelun.
Suomalainen.com -verkkokaupassa on mahdollista jättää tuotearvosteluja siellä myynnissä olevista tuotteista. Tuotearvosteluja voivat jättää sekä tuotetta Suomalaisesta Kirjakaupasta ostaneet asiakkaat että muut sivuston käyttäjät. Arvostelijan nimimerkin jälkeinen teksti kertoo, onko kyseessä vahvistettu ostaja vai muu asiakas/sivuston käyttäjä.
-
Vahvistettu ostaja - Kyseinen arvostelu on jätetty käyttämällä tuotteen ostajalle lähetettyä sähköpostilinkkiä. Kyseessä on siis vahvistettu ostaja eli arvostelun jättänyt henkilö on ostanut todennetusti kyseisen tuotteen.
-
Vahvistettu suosittelija - Kyseinen arvostelu on jätetty suomalainen.com -verkkosivustolla. Arvostelijan sähköpostiosoite on vahvistettu, jotta on voitu varmistua siitä, että arvostelun on jättänyt oikea henkilö. Suomalainen.com ei kuitenkaan ole vahvistanut, että kyseinen henkilö on ostanut tuotteen.
- Ei tekstiä nimimerkin jälkeen - Kyseinen arvostelu on jätetty suomalainen.com -verkkosivustolla, mutta arvostelun jättäjän sähköpostiosoitetta ei ole vahvistettu.
Tuotearvostelussa pakollisia tietoja ovat tuotteen pistemäärä (tähdet), otsikko sekä arvosteluteksti. Jos jätät arvostelun sinulle lähetetyn sähköpostilinkin kautta, arvostelu julkaistaan käyttämällä etunimeäsi sekä sukunimen ensimmäistä kirjainta.
Jos jätät arvostelun sivustollamme, voit käyttää arvostelussa myös nimimerkkiä. Arvostelun jättämisen yhteydessä sinulta kysytään sähköpostiosoitetta. Käytämme sähköpostiosoitetta ainoastaan sen vahvistamiseen, että arvostelun on lähettänyt oikea henkilö, eikä esimerkiksi robotti. Emme jaa sähköpostiosoitettasi eteenpäin Suomalaisen Kirjakaupan ulkopuolelle. Tuotearvostelujen palveluntarjoajana toimii Yotpo. Tässä linkki Yotpon tietosuojaselosteeseen.
Arvostelut julkaistaan tuotteen kohdalla automaattisesti ja ne tulevat esiin viiveellä. Suomalainen.com pidättää kuitenkin oikeuden poistaa kommentit, jotka sisältävät epäasiallista, herjaavaa tai halventavaa kieltä, vihapuhetta tai ovat muuten hyvän tavan vastaisia, tai joissa markkinoidaan muiden toimijoiden sivustoja tai tuotteita.
Jättämällä arvostelun annat Suomalaiselle Kirjakaupalle oikeuden käyttää kyseisiä arvosteluja omassa markkinoinnissaan (sekä painettu että digitaalinen) ilman erillistä korvausta.
Tuotearvostelun jättäneiden kesken arvotaan säännöllisin väliajoin tuotepalkintoja.
Mikäli haluat poistaa jättämäsi tuotearvostelun verkkokaupastamme, pyyntö tästä tulee ohjata asiakaspalveluumme: asiakaspalvelu@suomalainen.com.
Tuotearvostelut eivät ole tarkoitettu asiakasreklamaatioiden tai tilauskyselyjen tekemiseen. Reklamaatiotapauksissa pyydämme ottamaan yhteyttä asiakaspalveluumme: asiakaspalvelu@suomalainen.com.
Jättämällä arvostelun suomalainen.com -verkkokauppaan hyväksyt yllämainitut käytännöt ja ehdot.
Lue lisää tuotearvosteluista.