From: piccardi Date: Fri, 20 Oct 2023 10:43:52 +0000 (+0200) Subject: Altre piccole correzioni X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=9591992789144176c6d5d90920d21bbda5e4b7d7 Altre piccole correzioni --- diff --git a/session.tex b/session.tex index 77510fe..25c8146 100644 --- a/session.tex +++ b/session.tex @@ -44,9 +44,9 @@ Originariamente si trattava di dispositivi specifici (i terminali seriali, se non addirittura le telescriventi). Oggi questa interfaccia viene in genere emulata o tramite programmi o con le cosiddette console virtuali associate a monitor e tastiera, ma esiste sempre la possibilità di associarla direttamente -ad alcuni dispositivi, come eventuali linee seriali, ed in certi casi, come -buona parte dei dispositivi embedded su cui gira Linux (come router, access -point, ecc.) questa resta anche l'unica opzione per una \textit{console} di +a dispositivi specifici lelinee seriali, che in certi casi, come avviene per +buona parte dei dispositivi embedded su cui gira Linux come router, access +point, ecc. sono l'unica opzione per una avere una \textit{console} di sistema. @@ -64,7 +64,7 @@ molti terminali in contemporanea da una singola postazione di lavoro, ma il sistema è nato prima dell'esistenza di tutto ciò. Il \textit{job control} è una caratteristica opzionale, introdotta in BSD -negli anni '80, e successivamente standardizzata da POSIX.1. La sua +negli anni '80, e successivamente standardizzata da POSIX.1; la sua disponibilità nel sistema è verificabile attraverso il controllo della macro \macro{\_POSIX\_JOB\_CONTROL}. In generale il \textit{job control} richiede il supporto sia da parte della shell (quasi tutte ormai lo hanno), che da parte @@ -562,7 +562,7 @@ terminati. L'organizzazione del sistema del job control è strettamente connessa alle modalità con cui un utente accede al sistema per dare comandi, collegandosi ad esso con un terminale, che sia questo realmente tale, come un VT100 collegato -ad una seriale o virtuale, come quelli associati a schermo e tastiera o ad una +ad una seriale, o virtuale, come quelli associati a schermo e tastiera o ad una connessione di rete. Dato che i concetti base sono gli stessi, e dato che alla fine le differenze sono nel dispositivo cui il kernel associa i file standard (vedi tab.~\ref{tab:file_std_files}) per l'I/O, tratteremo solo il caso @@ -695,12 +695,12 @@ Questi programmi, che devono essere eseguiti in modalità non interattiva e senza nessun intervento dell'utente, sono normalmente chiamati \textsl{demoni}, (o \textit{daemons}), nome ispirato dagli omonimi spiritelli della mitologia greca che svolgevano compiti che gli dei trovavano noiosi, di -cui parla anche Socrate (che sosteneva di averne uno al suo servizio). +cui parla anche Socrate, che sosteneva di averne uno al suo servizio. %TODO ricontrollare, i miei ricordi di filosofia sono piuttosto datati. Se però si lancia un programma demone dalla riga di comando in un sistema che -supporta, come Linux, il \textit{job control} esso verrà comunque associato ad +supporta il \textit{job control} come Linux, esso verrà comunque associato ad un terminale di controllo e mantenuto all'interno di una sessione, e anche se può essere mandato in background e non eseguire più nessun I/O su terminale, si avranno comunque tutte le conseguenze che abbiamo trattato in @@ -823,7 +823,7 @@ differenti meccanismi come: le modalità con cui queste azioni vengono realizzate dipendono ovviamente dal demone che si usa, per la gestione del quale si rimanda ad un testo di amministrazione di sistema.\footnote{l'argomento è ad esempio coperto dal - capitolo 3.2.3 si \cite{AGL}.} + capitolo 3.2.3 di \cite{AGL}.} La \acr{glibc} definisce una serie di funzioni standard con cui un processo può accedere in maniera generica al servizio di \textit{syslog}, che però @@ -1270,9 +1270,9 @@ al di fuori di questo. \label{sec:sess_terminal_io} Benché come ogni altro dispositivo i terminali siano accessibili come file, -essi hanno assunto storicamente, essendo stati a lungo l'unico modo di -accedere al sistema, una loro rilevanza specifica, che abbiamo già avuto modo -di incontrare nella precedente sezione. +essendo stati a lungo l'unico modo di accedere al sistema essi hanno assunto +storicamente una loro rilevanza specifica, che abbiamo già avuto modo di +incontrare nella precedente sezione. Esamineremo qui le peculiarità dell'I/O eseguito sui terminali, che per la loro particolare natura presenta delle differenze rispetto ai normali file su diff --git a/sources/sigwait.c b/sources/sigwait.c new file mode 100644 index 0000000..7dcc983 --- /dev/null +++ b/sources/sigwait.c @@ -0,0 +1,66 @@ +/* sigwait.c + * + * Copyright (C) 2021 Simone Piccardi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +/**************************************************************** + * + * Program sigwait.c: + * Test program for sigwait function + * + * Author: Simone Piccardi + * Nov. 2021 + * + ****************************************************************/ +/* + * Include needed headers + */ +#define _GNU_SOURCE +#include /* unix standard library */ +#include /* signal constants, types and functions */ +#include /* error definitions and routines */ +#include /* C standard library */ +#include /* unix standard library */ +#include /* standard I/O library */ +#include /* C strings library */ + +int main(int argc, char *argv[]) +{ +/* + * Variables definition + */ + int i; + pid_t pid = 0; + int sig,res; + sigset_t set; + + sigemptyset(&set); + sigaddset(&set, SIGALRM); +// while (1) { + res=sigwait(&set, &sig); + printf("Sig was %d", sig); + if ( res > 0) { + printf("Errno was %d", errno); + perror("errore"); + printf("Result was %d", res); + printf("Error by res was %s", strerror(res)); + exit(11); + } else { + printf("Result was %d", res); + printf("Normal exit"); + } +// } +}