Está en la página 1de 3

Archivo: /home/nessa/Escritorio/funciones.

c Página 1 de 3

void main(int argc, char *argv[]);

int getpid(); //Devuelve el PID del proceso

int getppid(); //Devuelve el parent PID

unsigned short getuid(); //Devuelve el real user ID

unsigned short geteuid(); //Devuelve el effective user ID

unsigned short getegid(); //Devuelve el effective group ID

int getpgrp(); //Devuelve el process groupID

int getpgid(int pid); //Devuelve el process groupID del proceso


//cuyo pid se especifica, o del proceso
//actual si pid=0

int setpgrp(); //Permite asociar como process groupID el PID


// del proceso en cuestion (líder)

int setpgid(int pid, int pgid); //Permite aplicar el process group


// especificado por pgid al proceso pid. Si no se es
// administrado, pid solo puede ser el del proceso actual.

#include <pwd.h>
//Funciones para buscar información en /etc/passwd
struct passwd *pgetpwuid(int uid);//Devuele
struct passwd *getpwnam(char *name);
struct passwd{
char *pw_name; /* nombre-login */
char *pw_passwd; /* passwd cifrado */
int pw_uid; /* userID */
int pw_gid; /* groupID */
char *pw_gecos; /* comentarios */
char *pw_dir; /* directorio de login */
char *pw_shell; /* shell */
}

#include <grp.h>
//Funciones para buscar información en /etc/group
struct group *getprgid(int gid);
struct group *getgrnam(char *name);
struct group{
char *gr_name; /* nombre-grupo */
char *gr_passwd; /* password cifrado */
int gr_gid; /* group ID */
char **gr_mem; /* vector de punteros a la lista
* de usuarios */
}

#include <sys/types.h>
#include <sys./stat.h>
//Devuelven los atributos de un archivo (los guarda en buf)
//Devuelven 0 si tiene éxito y -1 si fallan
int stat(char *pathnme, struct stat *buf);
int fstat(int fildes, struct stat *buf);
struct stat{
ushort st_mode; /* tipo de archivo y permisos de acceso */
ino_t st_ino; /* nº de nodo */
ushort st_nlink;
dev_t stdev;
ushort st_uid; /* userID */
ushort st_gid; /* groupID */
dev_t st_rdev;
off_t st_size; /* tamaño del archivo en bytes */
time_t st_atime; /* fecha de ultimo acceso al archivo */
time_t st_mtime; /* fecha de última modifiación */
time_t st_ctime; /* fecha último cambio de status (creacion) */
}
Archivo: /home/nessa/Escritorio/funciones.c Página 2 de 3

//Activa el valor de la máscara de creación de ficheros, que tiene todos los procesos
int umask(int cmask);
//cmask (9 bits de menor orden): máscara -> permisos de acceso

//Crea directorios
int mkdir(char *pathname, int mode);
//mode: 12 bits menos significativos de los permisos de acceso

//Permite que un proceso cambie su directorio de trabajo


int chdir(char *pathname);
//Devuelve 0 si tiene éxito, -1 en caso contrario

#include <sys/time.h>
int gettimeofday(struct timeval *tvalptr, struct timezone *tzoneptr);
//tzoneptr: puede ser null si no nos interesa esa información
struct timeval{
long tv_sec; /* segundos desde 00:00:00 GTM, 01/01/1970 */
long tv_usec; /* más microsegundos */
}

long time(long *ptr); //Devuelve tv_sec

#include <fcntl.h>
int open(char *pathname, int oflag[, int mode]);
/* oflag: O_RDONLY, O_WRONLY, O_RDWR, O_NDELAY,
O_APPEND, O_CREAT, O_TRUNC, O_EXCL */
/* si oflag=O_CREAT, el tercer argumento indica el modo de creación */
/* devuelve un fildes si tiene éxito, o -1 en otro caso */

//Crea un fichero
int creat(char *pathname, int mode);
/* devuelve un fildes si tiene éxito, o -1 en otro caso */
/* mode: 12 bits menos significativos de la palabra de acceso
(pueden ser modificados por la máscara */

//Cierra un fichero
int close(int fildes);

//Permite leer datos de un fichero abierto


int read(int fildes, char *buff, unsigned int nbytes);
/* Si concluye con éxito devuelve el nº de bytes leídos,
si estamos al final del archivo devuelve cero,
en caso de error devuelve -1 */

//Permite escribir datos en un fichero abierto


int write(int fildes, char *buff, unsigned int nbytes);
/* Devuelve el nº real de bytes escritos
en caso de error devuelve -1 */

//Permite posicionarnos en un fichero


int lseek(int fildes, long offset, int whence);
/*whence puede ser:
SEEK_SET: el offset se mide desde el ppio del archivo
SEEK_WR: el offset se mide desde la posición actual
SEEK_END: el offset se mide desde el final del archivo */

//Permite duplicar un descriptor


int dup(int fildes);
/* Devuelve un nuevo descriptor que se refiere al mismo fichero
o pipe que fildes, tiene el mismo modo de acceso y la misma
posición */

//Permite duplicar un descriptor especificando el nuevo.


int dup2(int oldfildes, int newfildes);
/* Si newfildes está en uso se libera (close) y se asigna */

#include <sys/ioctl.h>
//Cambia el comportamiento de un archivo abierto
int ioctl(int filedes, unsigned long request, char *arg);

//Permite que un proceso envíe una señal a otro proceso


int kill(int pid, int sig);
Archivo: /home/nessa/Escritorio/funciones.c Página 3 de 3

#include <fcntl.h>
//Permite cambiar las propiedades de un fichero abierto
int fcntl(int fildes, int cmd, int arg);
/*cmd puede ser:
F_DUPFD: igual que dup, pero busca el descriptor >=arg
F_SETFD: activa el bit close_on_exec, el tercer argumento
tiene que ser FD_CLOEXEC.
F_GET_FD: devuelve el valor de la bandera close_on_exec
F_SETFL: status al valor de arg, que, entre otros, puede ser:
O_APPEND: modo "solo añadir"
O_NONBLOCK: E/S no bloqueante
O_ASYNC: permite el envio de SIGIO
F_GETFL: devuelve el valor de las banderas de estatus
F_SETTOWN: pone el PID (si arg>0) o el PGID (si arg<0) que
recibirá las señales SIGIO y SIGURG.
F_GETTOWN: deuvel el PID o PGID (depende de arg) que recibirá
de las señales SIGIO y SIGURG.
F_GETLK, F_SETLK, F_SETLKW: para bloqueo de archivos */