Salte la navegación

Programa en Lenguaje C que manipula dos Semáforos. En breve lo comentare.

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/sem.h>

#define SEM_HIJO 0

#define SEM_PADRE 1

main (int argc, int *argv[]) {

int i = 10, semid, pid;

struct sembuf opera;

key_t llave;

llave = ftok ( argv[0], ‘K’ );

if ( ( semid = semget ( llave, 2, IPC_CREAT | 0666 ) ) == -1 ) {

perror ( “semget” );

exit ( -1 );

}

// Cerrar el Semaforo del Hijo

semctl ( semid, SEM_PADRE, SETVAL, 0 );

// Abrir el Semaforo del Padre

semctl ( semid, SEM_PADRE, SETVAL, 1 );

if ( ( pid = fork () ) == -1 ) {

perror ( “fork “);

exit ( -1 );

}

else if ( pid == 0 ) {

while ( i ) {

opera.sem_num = SEM_HIJO;

opera.sem_op = -1;

opera.sem_flg = 0;

semop (semid, &opera, 1);

printf ( “Proceso Hijo: %d\n “, i– );

opera.sem_num = SEM_PADRE;

opera.sem_op = 1;

semop ( semid, &opera, 1 );

}

semctl ( semid, 0, IPC_RMID, 0 );

}

else {

opera.sem_flg = 0;

while ( i ) {

opera.sem_num = SEM_PADRE;

opera.sem_op = -1;

semop ( semid, &opera, 1 );

printf ( “Proceso Padre: %d\n “, i– );

opera.sem_num = SEM_HIJO;

opera.sem_op = 1;

semop ( semid, &opera, 1 );

}

semctl ( semid, 0, IPC_RMID, 0 );

}

}

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#define SEM_HIJO 0
#define SEM_PADRE 1
main (int argc, int *argv[]) {
int i = 10, semid, pid;
struct sembuf opera;
key_t llave;
llave = ftok ( argv[0], ‘K’ );
if ( ( semid = semget ( llave, 2, IPC_CREAT | 0666 ) ) == -1 ) {
perror ( “semget” );
exit ( -1 );
}
// Cerrar el Semaforo del Hijo
semctl ( semid, SEM_PADRE, SETVAL, 0 );
// Abrir el Semaforo del Padre
semctl ( semid, SEM_PADRE, SETVAL, 1 );
if ( ( pid = fork () ) == -1 ) {
perror ( “fork “);
exit ( -1 );
}
else if ( pid == 0 ) {
while ( i ) {
opera.sem_num = SEM_HIJO;
opera.sem_op = -1;
opera.sem_flg = 0;
semop (semid, &opera, 1);
printf ( “Proceso Hijo: %d\n “, i– );
opera.sem_num = SEM_PADRE;
opera.sem_op = 1;
semop ( semid, &opera, 1 );
}
semctl ( semid, 0, IPC_RMID, 0 );
}
else {
opera.sem_flg = 0;
while ( i ) {
opera.sem_num = SEM_PADRE;
opera.sem_op = -1;
semop ( semid, &opera, 1 );
printf ( “Proceso Padre: %d\n “, i– );
opera.sem_num = SEM_HIJO;
opera.sem_op = 1;
semop ( semid, &opera, 1 );
}
semctl ( semid, 0, IPC_RMID, 0 );
}#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#define SEM_HIJO 0
#define SEM_PADRE 1
main (int argc, int *argv[]) {
int i = 10, semid, pid;
struct sembuf opera;
key_t llave;
llave = ftok ( argv[0], ‘K’ );
if ( ( semid = semget ( llave, 2, IPC_CREAT | 0666 ) ) == -1 ) {
perror ( “semget” );
exit ( -1 );
}
// Cerrar el Semaforo del Hijo
semctl ( semid, SEM_PADRE, SETVAL, 0 );
// Abrir el Semaforo del Padre
semctl ( semid, SEM_PADRE, SETVAL, 1 );
if ( ( pid = fork () ) == -1 ) {
perror ( “fork “);
exit ( -1 );
}
else if ( pid == 0 ) {
while ( i ) {
opera.sem_num = SEM_HIJO;
opera.sem_op = -1;
opera.sem_flg = 0;
semop (semid, &opera, 1);
printf ( “Proceso Hijo: %d\n “, i– );
opera.sem_num = SEM_PADRE;
opera.sem_op = 1;
semop ( semid, &opera, 1 );
}
semctl ( semid, 0, IPC_RMID, 0 );
}
else {
opera.sem_flg = 0;
while ( i ) {
opera.sem_num = SEM_PADRE;
opera.sem_op = -1;
semop ( semid, &opera, 1 );
printf ( “Proceso Padre: %d\n “, i– );
opera.sem_num = SEM_HIJO;
opera.sem_op = 1;
semop ( semid, &opera, 1 );
}
semctl ( semid, 0, IPC_RMID, 0 );
}
}

Como es costumbre de cualquiera que abre un Blog.

No hay otra cosa mejor que hacer:

char Hello[15] = “Hello, World”; char *HelloWorld;

HelloWorld = &Hello;

printf(“%s”,*HelloWorld);

 

Desktop OS X

Desktop OS X

Leopard OS X, MacBook Black

Saludos (Luis Angel Cerritos Ortiz)

Seguir

Get every new post delivered to your Inbox.