Show Menu
Cheatography

SOPER Cheat Sheet (DRAFT) by

apuntes para soper

This is a draft cheat sheet. It is a work in progress and is not finished yet.

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])
 

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)

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.
 

Identi­fic­adores

 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ Usuario
UID:
id de usuario(0 para su)
GID:
id del grupo
 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ Fichero
i-nodo
número de inodo
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