Show Menu
Cheatography

SOPER

Fork

Permite crear un proceso hijo.
Padre:
PID del hijo
Hijo:
0
Error:
-1

exec

Pone en ejecución un programa. No cambia la identidad del proceso.
execlp
argumentos en lista
execvp
argumentos en vector a punteros (argv[])
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ herencia
PID,PP­ID,­PGI­D,UID GID
variables de entorno
señales pendientes
tabla de descri­ptores
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ Diferente
EUID,EGID
compor­tam­iento ante señales

execlp

execlp­(co­man­do,­com­and­o,a­rgu­men­to1­,....,0)
Comando dos veces

execvp

execvp­(ar­gv[­1],­&a­rgv[1])

strtok­(s,­"­_")

La primera vez devuelve el puntero donde empieza la primera palabra y escribe un \0 donde acaba
Siguientes veces usar null en vez de s.

wait // waitpi­d(p­id_­hij­o,p­_es­tad­o,o­ptions)

error
-1 (si no hay hijos) // errno =10
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ Termin­ación
voluntaria
byte + signif­icativo
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ proceso zombie
Cuando el padre no ha hecho wait
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ proceso huérfano
Cuando el padre se cierra dejando hijios activos. Son adoptados por el init(p­id=1)
 

Signal­(se­ñal­,co­mpo­rta­miento)

Señal:
Nombre o número
compor­tam­iento:
SIG_DFL
0
SIG_IGN
1
rutina­_ca­ptura
 
puntero a función de parametro entero que devuelve void
Devuelve:
Compor­tam­iento anterior
Capturar señal
Solo una vez
#define SIG_ER­R(v­oid­(*)­(in­t))-1

kill(p­id_­señ­ala­do,­señal)

 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ pid_se­ñalado
>0
pid destino
=0
todos los del grupo
=-1
Todos los proces­os(SU)
<-1
grupo de procesos con valor absoluto
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ matar a todos
kill -9 -1
error:
-1

alarm(sec)

Programa la recepción de sIG_ALARM dentro de sec segundos
alarm(0)
Cancela la alarma que haya (Solo puede haber una)
devuelve:
tiempo de la anterior alarma
Recuerda capturar antes de hacer alarm

pause()

Suspende al proceso hasta la llegada de una señal capturada.
devuelve -1 al capturar señal

Señales seguras

sigset_t
sigemp­tyset (todo vacío)
 
sigfil­lse­t(todo lleno
 
sigadd­set­(añ­adir)
 
sigdel­set­(bo­rrar)
 
sigism­emb­er(­sig­set­_t,int signo)
int sigpro­cma­sk(int how, sigset_t set,si­gset_t oset)
how
SIG_BLOCK //añade set al conjunto
 
SIG_UN­BLOCK // quita set al conjunto
 
SIG_SE­TMASK // pone nuevo set como conjunto
oset
devuelve el conjunto previo de señales
set
devuelve el nuevo
int sigpen­din­g(s­igs­et_­t*set)
int sigsus­pen­d(s­igs­et_t* sigmask)
 
operacion atomica para resolver problemas de sincro.
 
bloqueo sigusr1
 
kill( , sigusr1)
 
sigsus­pen­d(d­esb­loqueo)
 

Identi­fic­adores

 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ Usuario
UID:
id de usuario(0 para su)
GID:
id del grupo
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ Fichero
número de inodo
i-nodo
UID:
propie­tario
GUID:
grupo propie­tario
permisos de acceso­(us­er-­gro­up-­other)
set-us­er-id
usuario efectivo
set-gr­oup-id
grupo efectivo
sticky bit
gestión en directorio compar­tid­o(\tmp)
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ Proceso
PID
pid_t getpid() //id padre
PGID
pid_t getpgrp() //id del grupo
UID
uid_t getuid() // usuario real
GID
gid_t getgid() // id del grupo usuario
EUID
uid_t geteuid() //usuario efectivo
 
si(set­-us­er-­id==1) then EUID=UID
EGID
gid_t getegid // grupo efectivo

Señales

Por defecto termina el programa
ctrl+c o ctrl+y no se pueden controlar
Termin­ación proceso hijo no se puede capturar
SIGINT
2
SIGQUIT
3
SIGPIPE
13
SIGALRM
14
SIGTERM
15
SIGUSR­[1,2]
16,17
SIGCHLD
18
SIGSTOP
23
SIGCONT
25
SIGSEGV
11

Llamadas sistema

int creat(­cha­r*p­ath­,mode_t mode)
 
Crea un fichero o reescribe uno existente. Abierto solo para escritura. Si el fichero existe pierdes los datos.
 
Devuelve Descriptor de fichero o -1
int open(c­har­*pa­th,int oflag, [mode])
 
Permite abrir un archivo como lectura, escritura o ambas
[oflag]
 
O_RDONLY 0
 
O_WRONLY 1
 
O_RDWR 2
[mode]
 
O_APPE­ND(­cursor al final)
 
O_CREA­T(crea fichero)
int close( int fd)
Elimina la entrada TDF y TFA y decrementa nºopens en TI
Devuelve 0 o -1
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.