Gracias.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
/* Filename: depurador.c */
#include <curses.h>
int main (void)
{
initscr();
trace(TRACE_CALLS);
printw("Establecer nivel de depuración para TRACE_CALLS");
refresh();
endwin();
return 0;
}
DB *puntero_db
#include <db.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main ( void )
{
DB *dbp; /* DB structure handle */
u_int32_t flags; /* database open flags */
int ret; /* function return value */
/* Initialize the structure. This
* database is not opened in an environment,
* so the environment pointer is NULL. */
ret = db_create(&dbp, NULL, 0);
if (ret != 0) {
/* Error handling goes here */
perror("db_create");
exit(EXIT_FAILURE);
}
/* Database open flags */
flags = DB_CREATE; /* If the database does not exist,
* create it.*/
/* open the database */
ret = dbp->open(dbp, /* DB structure pointer */
NULL, /* Transaction pointer */
"test.db", /* On-disk file that holds the database. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
flags, /* Open flags */
0600); /* File mode (using defaults) */
if (ret != 0) {
/* Error handling goes here */
perror ("db_open");
exit(EXIT_FAILURE);
}
dbp->close(dbp,0);
return EXIT_SUCCESS;
} /* ---------- end of function main ---------- */
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <db.h>
int main (void)
{
DB puntero_db; /* descriptor de base de datos */
int valor_retornado;
valor_retornado = db_open("test.db", DB_BTREE, DB_CREATE, 0600, NULL, NULL, &puntero_db);
if (valor_retornado) {
perror ("db_open");
exit(EXIT_FAILURE);
}
DB->close(puntero_db,0);
exit(EXIT_SUCCESS);
return EXIT_SUCCESS;
}
getchar();
close(fd);
/*
* lockit.c - Establece el bloqueo en un archivo
*/
#include <unistd.h>
#include <sys/file.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
/* Establece un bloqueo de tipo en el descriptor fd */
void setlock(int fd, int type);
int main ( int argc, char *argv[] )
{
int fd;
/* Abre el archivo */
fd = open(argv[1], O_RDWR | O_CREAT, 0666);
if (fd < 0) {
perror("open");
exit(EXIT_FAILURE);
}
/* Establece un bloqueo de lectura */
setlock(fd, F_RDLCK);
printf("PID %d bloqueado para lectura %s\n", getpid(), argv[1]);
getchar();
/* Desbloqueo */
setlock(fd, F_UNLCK);
printf("PID %d unlocked %s\n", getpid(), argv[1]);
getchar();
close(fd);
/* Establece un bloqueo de escritura */
setlock(fd, F_WRLCK);
printf("PID %d bloqueado para escritura %s\n", getpid(), argv[1]);
return EXIT_SUCCESS;
} /* ---------- end of function main ---------- */
void setlock(int fd, int type)
{
struct flock lock;
char msg[80];
/* Describe el bloqueo que queremos */
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 1; /* bloquea un solo bit */
while (1) {
lock.l_type = type;
/* Bloqueo establecido y vuelta al que llama */
if ((fcntl(fd, F_SETLK, &lock)) == 0)
return;
/* Busca por qué no podemos establecer el bloqueo */
fcntl(fd, F_GETLK, &lock);
if(lock.l_type != F_UNLCK) {
switch(lock.l_type) {
case(F_RDLCK):
sprintf(msg, "bloqueo de lectura ya establecido por %d\n", lock.l_pid);
break;
case(F_WRLCK):
sprintf(msg, "bloqueo de escritura ya establecido por %d\n", lock.l_pid);
break;
}
}
puts(msg);
getchar();
}
}
if ((fstat(fd,&buf)) < 0){
perror("fstat");
exit(EXIT_FAILURE);
}