Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di...

30
24/11/15 1 Programmazione 1: Sperimentazioni Luca Anselma [email protected] a.a. 2015/2016 Per l’accessibilità di queste slide è stato usato Chi è costui? Luca Anselma Ricercatore presso il Dipartimento di Informatica dell’Università di Torino E-mail: [email protected] (indicare nome, cognome, matricola e titolo del corso) Ricevimento: su appuntamento

Transcript of Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di...

Page 1: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

1

Programmazione 1: Sperimentazioni

Luca [email protected]

a.a. 2015/2016 Per l’accessibilità di queste slide è stato usato

Chi è costui?• Luca Anselma• Ricercatore presso il Dipartimento di Informatica

dell’Università di Torino• E-mail: [email protected] (indicare nome,

cognome, matricola e titolo del corso)• Ricevimento: su appuntamento

Page 2: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

2

Materiale didattico• Queste slide (reperibili su D.I.R. (Moodle))• Testo consigliato: lo stesso di Programmazione 1:

Fondamenti: o P. Deitel, H. Deitel, “Il linguaggio C – Fondamenti e

tecniche di programmazione”, Pearson• In alternativa:

o Kelley, Pohl, “C: didattica e programmazione”, Pearsono Qualunque testo di approfondimento presente in biblioteca

• Biblioteca DISUM (biblioteca di Lettere) dell'Università del Piemonte Orientale di Vercelli via G. Ferraris 54

Tutoraggio• Tutor: Roberto Nai• e-mail: [email protected]

Page 3: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

3

Obiettivi• Introdurre alla programmazione con il linguaggio C• Conoscenze preliminari: Prima parte di

Programmazione 1: Fondamenti

Programma• Introduzione a Unix/Linux• Approfondimenti di C• Approfondimenti sui tipi di dato primitivi, cast• Approfondimenti sulle stringhe• Aritmetica dei puntatori• Approfondimenti sul passaggio dei parametri• Strutture• Funzioni di I/O e di gestione file

Page 4: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

4

Esame• Prova scritta con esercizi di programmazione da

svolgere con carta e penna• Iscrizione tramite Esse3 www.studenti.uniupo.it• Il voto finale sarà una media pesata

(6 cfu + 3 cfu) con il voto di Programmazione 1: Fondamenti, cioèVoto di Programmazione 1 = (2 * voto di Fondamenti + voto di Sperimentazioni) / 3

Strumenti di lavoro• Un sistema operativo Unix o Unix-like (Linux in

qualunque distribuzione (Mint, Ubuntu, Debian…) è perfetto)

• Un text editor (ad es. Gedit, gvim, emacs, …) per scrivere i programmio Per scopi didattici non useremo un IDE (ambiente integrato di sviluppo)

• Un compilatore C (ad es. gcc, compreso in ogni installazione di sistemi operativi Unix o Unix-like)

Page 5: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

5

Strumenti di lavoro• Per usare Linux sul computer di casa si hanno tre

possibilità:o Avvio con una installazione “live” di Linux da CD,

DVD o chiavetta USB• È l’alternativa meno “intrusiva” ma più precaria

o Installazione di Linux• In questo caso non si può usare Linux

contemporaneamente a Windows o a Mac OS• Maggiore velocità

o Virtualizzazione (ad esempio con VirtualBox o VMware player, che sono gratuiti)• Si installa un programma (VirtualBox o VMware)

che permette di fare girare Linux all’interno di Windows (o Mac OS) in una “macchina virtuale”

• Potrebbe essere lento su computer non recenti

Introduzione a Linux

Page 6: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

6

Cenni storiciUnix nato all’inizio degli anni ’70Sviluppato da un gruppo di ricercatori dei Bell Laboratories della AT&TInizialmente scritto in assembly e poi riscritto in C per facilitare la portabilità su hardware diversiNel 1984 Richard Stallman inizia a lavorare al GNU Project con l’obiettivo di creare un sistema operativo simile a Unix e gratuito Nel 1991 Linus Torvalds inizia a lavorare a Linux, che propriamente è solo il kernel del sistema operativo mentre il resto (tool, shell, file system) proviene in gran parte da GNU

Cenni storici

Page 7: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

7

Sistemi operativi• Un sistema operativo è un’interfaccia tra l’utente (o

gli applicativi) e l’hardware

Architettura di Linux

Page 8: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

8

Kernel• Il kernel è il livello più basso del sistema Unix, cioè

quello più vicino all’hardware• Il kernel controlla i processi, le periferiche di

input/output, le operazioni del file system, la memoria

• Poiché gestisce task di basso livello, l’utente di solito non ha accesso al kernel

Kernel: Processi• Uno dei compiti più importanti del kernel consiste

nella gestione dei processi• I processi sono programmi in esecuzione. In un

sistema operativo multitasking come Unix possono essere in esecuzione più processi contemporaneamente; la gestione di questo è affidata al kernel

• Un processo ha un “proprietario” (umano o di sistema) che ha iniziato la chiamata o esecuzione. Il proprietario è legato ai permessi associati al processo

Page 9: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

9

Kernel: File system• Il file system permette all’utente di vedere, creare,

organizzare e interagire con i dispositivi di memoria secondaria attraverso una strutturazione a file e directory

Directory Content

bin/ Common programs, shared by the system, the system administrator and the users.

boot/ The startup files and the kernel.

dev/ Contains references to all the CPU peripheral hardware.

etc/ Most important system configuration files are in /etc, this directory contains data similar to those in the Control Panel in Windows

home/ Home directories of the common users.

lib/ Library files, includes files for all kinds of programs needed by the system and the users.

lost+found/ Every partition has a lost+found in its upper directory. Files that were saved during failures are here.

mnt/ Standard mount point for external file systems, e.g. a CD-ROM or a digital camera.

opt/ Typically contains extra and third party software.

root/ The administrative user's home directory. Mind the difference between /, the root directory and / root, the home directory of the root user.

sbin/ Programs for use by the system and the system administrator.

tmp/ Temporary space for use by the system, cleaned upon reboot, so don't use this for saving anything

usr/ Programs, libraries, documentation etc. for all user-related programs.

var/ Storage for all variable files and temporary files created by users, such as log files, the mail queue, the print spooler area, space for temporary storage of files downloaded from the Internet, or to keep an image of a CD before burning it.

Kernel: File system

Page 10: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

10

Shell• La shell è un interprete di comandi che permette

agli utenti di interagire con il sistema operativo• È il livello del sistema operativo con cui l’utente

può interagire direttamente• Si usa quasi esclusivamente via linea di comando

impartendo comandi testuali• Shell più diffuse: Bourne shell (sh), C shell (csh),

Korn shell (ksh), Bourne Again shell (bash)

Shell$ cat /etc/shells# /etc/shells: valid login shells/bin/csh/bin/sh/usr/bin/es/usr/bin/ksh/bin/ksh/usr/bin/rc/usr/bin/tcsh/bin/tcsh/usr/bin/esh/bin/dash/bin/bash/bin/rbash

$ echo $SHELL/bin/bash

Page 11: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

11

Account• Un account utente permette l’accesso a un sistema

Unix tramite la shell o ftp o altri mezzi• Per utilizzare le risorse fornite da un sistema Unix

dovete avere un account utente e i permessi di accesso a quelle risorse

• Tipi di account:o root (o superuser)o account di sistemao account utente

Account root• Un account root ha il controllo completo del sistema• Non ci sono restrizioni ai file a cui può accedere o

che può modificare e cancellare• In Unix si assume che gli utenti root sappiano ciò

che fanno. Quindi si deve usare un account rootsolo per lo stretto tempo necessario a svolgere i compiti più importanti

Page 12: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

12

Account di sistema• Un account di sistema viene usato per lo

svolgimento di operazioni da parte di componenti del sistema che di solito non usano la shell

• Ad esempio se sul sistema gira un web server esisterà un account di sistema per il processo (o i processi) legati al web server

Account utente• Un account utente permette di avere un accesso

interattivo (tramite shell) al sistema• Di solito agli utenti viene assegnato un accesso

limitato: non può accedere a tutte le risorse del sistema

Page 13: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

13

Account$ cat /etc/passwdnobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/falseroot:*:0:0:System Administrator:/var/root:/bin/shdaemon:*:1:1:System Services:/var/root:/usr/bin/false_uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico...

Gruppi utente• I gruppi utente permettono di definire un insieme

logico di utenti e sono utili per semplificare la gestione dei privilegi

• Un utente può appartenere a più gruppi

Page 14: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

14

Gruppi utente• Esempio: un’azienda di circa 100 impiegati usa un

server Unix centrale• Tre impiegati compongono lo staff della gestione

delle risorse umane e hanno a che fare con informazioni riservate come stipendi, aumenti, azioni disciplinari. La directory sul server centrale Risorse umane deve essere protetta in modo che solo loro possano vederne il contenuto

• Si può creare un gruppo chiamato ru, rendere membri del gruppo i tre impiegati, impostare i permessi sulla directory in modo che solo i membri del gruppo ru possano vedere e modificare i file

Permessi• I permessi di Unix sono posti sui file e directory e

possono essere assegnati a:o Il proprietario del file, noto anche come user (u)o Il gruppo assegnato al file (g)o Tutti gli altri (cioè chiunque altro abbia un

account valido sul sistema e non è un proprietario o non fa parte del gruppo) (others) (o)

Page 15: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

15

Permessi• Il proprietario di un file di solito è l’utente che ha

creato il file• Il proprietario può decidere chi può accedere al file

e con quale tipo di accesso

Permessi• Tre tipi di accesso a un file:

o Read (il file può essere letto)o Write (il file può essere modificato)o Execute (il file può essere eseguito; notare che, a

differenza che in Windows, un eseguibile puòavere qualunque estensione)

Page 16: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

16

Permessi• Tre tipi di accesso a una directory:

o Read (la directory può essere letta, cioè sipossono elencare i file contenuti)

o Write (la directory può essere modificata, cioè sipossono creare, rinominare e cancellare i file contenuti)

o Execute (la directory può essere “attraversata” per accedere ai file contenuti o alle sue sottodirectory)

Permessi• Quando si definiscono i permessi, si assegnano i

diritti di accesso a ogni categoria (u, g, o)• Per esempio, se scrivo un programma, sarò il

proprietario dell’eseguibile su cui avrò i diritti di lettura, scrittura ed esecuzione

Page 17: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

17

Come leggere i permessi

$ ls -l /etcdrwxr-xr-x 2 root root 4096 2012-09-30 09:08 bin

drwxr-xr-x Tipo del file (file/directory/link) e permessi (lettura r, scrittura w, esecuzione/attraversamento x) per proprietario, gruppo, altri

2 Numero di hard link

root proprietario del file

root Gruppo al quale il proprietario appartiene2012-09-30 09:08 Data e ora di ultima modifica

bin Nome del file o directory

I permessi vengono elencati visualizzando il contenuto di una directory con il comando ls -l

Come leggere i permessi (reprise)

Permission Applied to a Directory Applied to Any OtherType of File

read (r) Grants the capability to read the contents of the directory or subdirectories.

Grants the capability to view the file.

write (w) Grants the capability to create, modify, or removefiles or subdirectories.

Grants write permissions, allowing an authorizedentity to modify the file, such as by adding text to a text file, or deleting the file.

execute (x) Grants the capability to enter the directory.

Allows the user to “run” the program.

- No permission. No permission.

Page 18: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

18

Shell• I comandi della shell possono essere programmi a sé

stanti oppure essere integrati nella shell• Un comando può essere diviso in due parti: il

comando stesso e gli argomenti• Per esempio, ls permette di visualizzare il contenuto

di una directory

$ lsApplications Documents Library Music Public Sites VirtualBox VMs Desktop Downloads Movies Pictures

Shell• Gli argomenti permettono di influenzare il

comportamento del comando• Per esempio visualizzo il contenuto della directory

/etc

$ ls /etc6to4.conf hosts.equiv php.ini-5.2-previousAFP.conf irbrc php.ini.defaultafpovertcp.cfg kern_loader.conf ...

Page 19: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

19

Shell• I flag di solito (ma non sempre) sono preceduti da

un trattino• Per esempio visualizzo il contenuto della directory

/etc in formato lungo

$ ls -l /etctotal 1780 -rw-r--r-- 1 root root 15221 Feb 28 2001 a2ps.cfg -rw-r--r-- 1 root root 2561 Feb 28 2001 a2ps-site.cfg-rw-r--r-- 1 root root 47 Dec 28 2001 adjtime...

Principali comandiCommand Description

cat Concatenate: mostra il contenuto di un file

cd Change directory: cambia la directory corrente

cp Copy: copia un file/directory

find Trova un file/directory

head Mostra l’inizio di un file

less Permette di scorrere il contenuto di un file

ls List: mostra il contenuto di una directory

man Manual: permette di accedere al manuale in linea dei comandi Unix/C

mkdir Make directory: crea una directory

mv Move: sposta un file o lo rinomina

pwd Print working directory: mostra qual è la directory corrente

rm Remove: cancella un file

tail Mostra la fine di un file

Page 20: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

20

ls$ ls [options] [directory]

option function-l Lists directory contents in long format, which shows individual

file size, per- missions, and other data. -t Lists directory contents sorted by the timestamp (time of the

last modification) -a Lists all directory contents, including hidden files whose name

begins with the . character-R Lists directory contents including all subdirectories and their

contents

Caratteri jolly• Sono usati per trovare corrispondenze con più file

allo stesso tempo• ? Corrisponde a esattamente un carattere, che può

essere un carattere qualunque• * Corrisponde a qualsiasi sequenza di caratteri• Se la directory contiene

help help1 help2 help12 myprog.c• $ ls help? elenca help1 help2• $ ls help* elenca help help1 help2 help12• $ ls *.c elenca myprog.c

Page 21: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

21

cd• Cambia la directory corrente$ cd directory$ cd ..

o Si sposta alla directory genitore

$ cdo Si sposta alla directory home

mv• Sposta un file (o lo rinomina)$ mv old new• old è il file da spostare in new• Se new consiste solo in un nome di file, old viene

rinominato (e rimane nella directory corrente)$ mv file.txt nuovonome.txt• Se new è una directory, old viene spostato in new

(e non cambia nome)$ mv file.txt testi/

Page 22: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

22

cp• Copia un file $ cp old new• old è il file da copiare in new (new può essere una

directory o il nome da dare alla copia del file)

rm• Cancella un file (attenzione, è una cancellazione

irrevocabile: non usa il cestino)

Page 23: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

23

less• Permette di visualizzare un file “a pagine”• Barra spaziatrice per andare avanti di una pagina• b per tornare indietro di una pagina• q per uscire• /stringa per cercare il testo “stringa” (poi n e N

per muoversi avanti/indietro tra le occorrenze)• h per l’help

man• Permette di accedere all’”help” (il “manuale”)• Es.:

$ man ls• Stessi tasti di less (in effetti man per default usa

less come pager)

Page 24: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

24

chmod• Cambia i permessi di un file o una directory (change

mode)$ chmod [permessi] file• Usa tre cifre per rappresentare i permessi

(rispettivamente per il proprietario, il gruppo e gli altri)

• Ogni cifra rappresenta i permessi di lettura, scrittura ed esecuzione come maschera di bit (si considerano r=4, w=2, x=1 e si sommano i permessi attivi)

chmod• Es.:$ chmod 754 myfile

• Imposta i permessi di myfile in modo che il proprietario possa leggere, modificare ed eseguire il file (7), i membri del gruppo possano solo leggere ed eseguire (5) e gli altri possano solo leggere (4)

u g orwx rwx rwx111 101 100

4+2+1=7 4+1=5 4

Page 25: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

25

chmod$ ls -l file1-rw-r--r-- 2 anselma anselma 6 2014-09-03 13:56 file1

$ chmod 700 file1$ ls -l file1-rwx------ 2 anselma anselma 6 2014-09-03 13:56 file1

$ chmod 703 file1$ ls -l file1-rwx----wx 2 anselma anselma 6 2014-09-03 13:56 file1

$ chmod 701 file1 $ ls -l file1-rwx-----x 2 anselma anselma 6 2014-09-03 13:56 file1

Redirezione dell’input e dell’output

• In un’interfaccia a caratteri lo standard input di un programma corrisponde alla tastiera e lo standard output allo schermo

• La redirezione permette di forzare un programma ad accettare l’input da una fonte diversa e di mandare l’output verso una destinazione diversa

• Si usano i caratteri < e >

Page 26: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

26

Redirezione dell’input e dell’output

• > redireziona l’output• Es.

ls > output_di_ls.txtcrea un file output_di_ls.txt che contiene ciò che normalmente sarebbe stato visualizzato sullo schermo

• Se il file se esiste già viene sovrascritto• Se si vuole preservare il contenuto preesistente, si

può usare >> che aggiunge il nuovo contenuto in coda

Redirezione dell’input e dell’output

• < redireziona l’input• Es.

$sort < parole.txtInvoca il comando sort, che ordina alfabeticamente linee di testo prendendo l’input dal file parole.txt

• < e > si possono combinare• Es.

$sort< parole.txt>parole_ordinate.txt

Page 27: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

27

Redirezione dell’input e dell’output

• Pipe (simbolo |): permette di concatenare comandi usando l’output di un comando come l’input di un altro

• Es.$ ls -la | less

• L’output di ls diventa l’input di less e il contenuto della directory viene visualizzato una pagina per volta

Processi in background• Lo Unix è un sistema operativo multitasking, cioè

permette di avere più programmi in esecuzione contemporaneamente (processi)

• È possibile usare il multitasking anche con il terminale

• Quando si lancia un programma, questo gira in foreground e ha il controllo del terminale

• È possibile interromperne l’esecuzione premendo Ctrl+C

• È possibile sospenderne l’esecuzione premendo Ctrl+Z

Page 28: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

28

Processi in background• Dopo avere sospeso un processo, è possibile fare in

modo che continui a eseguire in background usando il comando bg

• Es. (il comando sleep n non fa niente per nsecondi)$ sleep 1000(Ctrl+Z)$ bg[1]+ sleep 100 &

• Un processo che continua a eseguire in background può scrivere l’output su schermo ma non può accettare input da tastiera

Processi in background• Le unità esecutive sono job• Job: sequenza di processi connessi da pipe

$ comando1 | comando2 | … | comandon• Con il comando jobs si ha l’elenco dei job• Per riprendere l’esecuzione in foreground si usa il comando

fg [numero del job]• Si possono avere più job in esecuzione in background, più

job sospesi, ma un solo job in esecuzione in foreground• È possibile lanciare un comando direttamente in esecuzione

in background aggiungendo il carattere & al termine del comando$ sleep 100 &

Page 29: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

29

Processi in background• Come si fa ad uscire da un job che non risponde perché,

per esempio, è in loop?1. Se è in foreground, si preme Ctrl+C2. Si scrive

$ kill %<numero del job>3. Se il job non termina lo stesso, si può usare

$ kill -9 %<numero del job>• In alternativa al numero del job, si può usare il PID

(process ID): si ottiene l’elenco dei processi con il comando ps (process status), si trova il PID e si usa il PID nella kill$ kill 1234

Come lavoreremo1. Usando un text editor creeremo o modificheremo un

file di testo contente il sorgente del programma C2. Compileremo il programma usando gcc3. In caso di errori/warning segnalati da gcc (errori

di sintassi) ritorneremo al passo 14. Eseguiremo il programma5. In caso di errori di esecuzione torneremo al passo

16. Per interrompere l’esecuzione del programma,

premeremo Ctrl+C

Page 30: Programmazione 1: Sperimentazioni - dir.uniupo.it file• Conoscenze preliminari: Prima parte di Programmazione 1: Fondamenti Programma • Introduzione a Unix/Linux • Approfondimenti

24/11/15

30

Come compilare• Useremo unicamente il terminale (finestra di comandi) e

il text editor (non useremo un IDE)• Scriviamo un programma C con il text editor e lo

salviamo con il nome esempio.c• Lanciamo il compilatore

$ gcc -o esempio esempio.c• Il compilatore genera un file eseguibile di nome esempio• L’opzione -o di gcc ci permette di assegnare un nome all’eseguibile (il nome

predefinito è a.out)• Lanciamo l’eseguibile scrivendo il nome del file nel

terminale$ esempio

• In alcune installazioni è necessario indicare anche la directory corrente:$ ./esempio