Unach
Facultad de Informática
Departamento de Ingeniería y Tecnología de Computadores
Área de Arquitectura y Tecnología de Computadores
PRÁCTICAS DE SS.OO.
I.I./I.T.I. Sistemas/I.T.I. Gestión
Práctica 3 Llamadas al Sistema en Linux
Enero de
Índice
1.
2.
La llamada
fork
1.1. Ejemplo de uso de fork . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .
1.2. Ejemplo de uso de exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Ejemplo de uso de fork y exec conjuntamente . . . . . . . . . . . . . . . . . . . . .
Listados
2.1. fork_exec_wait.c
2.2. runcom.c . . . . .
2.3. signal.c . . . . .
2.4. sigaction.c . . . .
2.5. sigaction_chld.c
2.6. envia.c . . . . . .
2.7. alarma.c . . . . .2.8. pipe3men.c . . .
2.9. pipecapa.c . . . .
2.10. pipe2com.c . . .
2.11. fo_esc.c . . . .
2.12. fo_lee.c . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
5
6
6
7
8
9
1012
13
15
16
17
19
21
3.
PROCESOS
22
4.
COMUNICACIONES ENTRE PROCESOS. SEÑALES
23
5.
COMUNICACIONES ENTRE PROCESOS. TUBERÍAS
24
6.
COMUNICACIONES ENTRE PROCESOS. FIFO's
25
7.
BIBLIOGRAFÍA
25
2
1.
La llamada
fork
1.1. Ejemplo de uso de fork
3
1.2. Ejemplo de uso de exec
4
1.3. Ejemplo de uso de fork y execconjuntamente
5
2.
Listados
2.1. fork_exec_wait.c
1
3
5
7
9
/ ∗ El s i g u i e n t e programa muestra e l uso de f o r k , e x e c y w a i t . . . ∗ /
#include
#include < s t d l i b . h>
#include
int main ( void ) {
int p i d ;
p r i n t f ( " Hasta a q u í hay un ú n i c o p r o c e s o . . . \ n" ) ;
p r i n t f ( " Primera llamada a f o r k . . . \ n" ) ;
11
13
/ ∗Creamos un nuevo p r o c e s o . ∗ /
pid = f o r k ( ) ;
15
if
17
19
else if
21
23
Hola , yo soy e l p r i m e r h i j o . . . \ n" ) ;
Voy a pararme d u r a n t e 60 s e g . y l u e g o t e r m i n a r é . . . \ n" ) ;
{
Hola , soy e l padre . El p i d de mi h i j o e s : %
d\n" , p i d ) ;
/ ∗ Creamos un nuevo p r o c e s o . ∗ /
pid = f o r k ( ) ;
( p i d == 0 ) {p r i n t f ( "HIJO2 : Hola , soy e l segundo h i j o . . . \ n" ) ;
p r i n t f ( "HIJO2 : El segundo h i j o va a e j e c u t a r l a orden ' l s ' . . . \ n" ) ;
e x e c l p ( " l s " , " l s " ,NULL) ;
p r i n t f ( "HIJO2 : S i ve e s t e mensaje , e l e x e c l p no f u n c i o n ó . . . \ n" ) ;
}
( pid > 0) {
p r i n t f ( "PADRE: Hola o t r a vez . Pid de mi segundo h i j o : %...
Regístrate para leer el documento completo.