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[])
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­h­ere­ncia
PID,PP­ID,­PGI­D,UID GID
variables de entorno
señales pendientes
tabla de descri­ptores
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­D­ife­rente
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
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­T­erm­ina­ción
voluntaria
byte + signif­icativo
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­p­roceso zombie
Cuando el padre no ha hecho wait
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­p­roceso 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)

 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­p­id_­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

 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­U­sua­rio
UID:
id de usuario(0 para su)
GID:
id del grupo
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­F­ich­ero
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)
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­P­roc­eso
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

Help Us Go Positive!

We offset our carbon usage with Ecologi. Click the link below to help us!

We offset our carbon footprint via Ecologi
 

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.