¡Ojo! Hago directos en Twitch sobre desarrollo web, ¿Te apuntas? ManzDev

programacion
3

Escrito por

¿Os habéis olvidado alguna vez de un paréntesis de asignación de descriptor de fichero, fifo en este caso, en un condicional? Pues yo, desgraciadamente sí.

Es un tópico, lo sé, pero es lo que hay. Estudiando para un exámen de DFU de procesos, señales, SysCalls, FIFOs, pipes, semaforos, IPC System V, memoria compartida y demás...

#include <sys/shm.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

char fifo[]="/home/mz";

void fallo( char msj[40], int error );

int main ( int argc, char **argv[] ) {
int descript, id_shm;
char mensaje[80], *buffer;

if ( mkfifo(fifo,0666) < 0 )
fallo("Error creando fifo...",-1);
if ( ( descript=open(fifo,O_RDONLY|O_NONBLOCK) ) < 0 )
fallo("Error...",-2);
if ( id_shm=shmget(CLAVE,4,IPC_CREAT|0666) == -1 )
fallo("Error...",-3);
if (( buffer=shmat(id_shm,0,0)) == NULL )
fallo("Error adosando IPC",-4);
[...]

El problema viene cuando tienes un extenso programa por delante, y se te olvida un detalle: los paréntesis de la asignación al descriptor. Obvias un detalle como éste y, te pasas todo un día buscando un fallo de concepto por un código sin errores.

Y, seamos francos, en la programación o tienes buen día, o no. No hay término medio. O tienes un día lúcido y las ideas frescas o eres un paleto que ni las operaciones básicas te funcionan.

Por suerte al día siguiente me levante fresco como una lechuga, detecté el error y todo fue sobre ruedas.

RELACIONADOS La jerarquía del programador
x La jerarquía del programador
Manz

3 comentarios

Publica tu opinión