Hi All,
I am finding problem with the semaphores. Please have a look at the following code.
Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/sem.h>
int main()
{
key_t key;
key=ftok("test.txt",1);
printf("Key:%d\n",key);
int semid;
if(semid=semget(key, 1, IPC_CREAT))
printf("Semaphore ID:%d\n",semid);
else
perror("Error in creating sem:\n");
semaphore_wait(semid, 1);
printf("\nInside Semaphore\nHit a Key to release");
getchar();
semaphore_signal(semid, 1);
}
int semaphore_wait(int sem_id, int sem_num)
{
struct sembuf sem_b;
sem_b.sem_num = sem_num;
sem_b.sem_op = -1;
sem_b.sem_flg = SEM_UNDO;
if (semop(sem_id, &sem_b, 1) == -1)
perror("\nError in sem_wait:");
else
{
printf("\nSemaphore in wait);
return(1);
}
}
int semaphore_signal(int sem_id, int sem_num)
{
struct sembuf sem_b;
sem_b.sem_num = sem_num;
sem_b.sem_op = 1;
sem_b.sem_flg = SEM_UNDO;
if (semop(sem_id, &sem_b, 1) == -1)
perror("\nError in sem_signal");
else
{
printf("Semaphore release");
return(1);
}
}
When I executed the following code it gives the Error as
------------------------------------------
Key:16999020
Semaphore ID:1114113
Error in sem_wait:: File too large
Inside Semaphore
Hit a Key to release
------------------------------------------
Whats the wrong in my code? Can anybody help me out please?
Thanks in advance.
Regards,
Cprogrammer.