का उपयोग करके अनिर्धारित संदर्भ समस्याएं मैं सेमफोरस का उपयोग करने के साथ खेल रहा हूं, लेकिन मैं अनिर्धारित संदर्भ चेतावनियों का सामना करना जारी रखता हूं, इस प्रकार मेरा कोड काम नहीं करता है। मैंने एक पाठ से उदाहरण कोड खींचा, लेकिन उनके कुछ वाक्यविन्यास के साथ समस्याएं थीं, इसलिए मैं पॉज़िक्स के सेमफोर ट्यूटोरियल में गया और चीजों को उनके वाक्यविन्यास में बदल दिया और नतीजतन अब इन संदर्भ त्रुटियों को प्राप्त कर रहा हूं।सेमफोरस
मैं बस कुछ दिख रहा हूं, लेकिन मुझे यह नहीं मिल रहा है।
त्रुटियाँ:
Producers_Consumers.c:52: warning: return type of ‘main’ is not ‘int’
/tmp/cceeOM6F.o: In function `producer':
Producers_Consumers.c:(.text+0x1e): undefined reference to `sem_init'
Producers_Consumers.c:(.text+0x3a): undefined reference to `sem_init'
Producers_Consumers.c:(.text+0x46): undefined reference to `sem_wait'
Producers_Consumers.c:(.text+0x52): undefined reference to `sem_wait'
Producers_Consumers.c:(.text+0x5e): undefined reference to `sem_post'
Producers_Consumers.c:(.text+0x6a): undefined reference to `sem_post'
/tmp/cceeOM6F.o: In function `consumer':
Producers_Consumers.c:(.text+0x7e): undefined reference to `sem_wait'
Producers_Consumers.c:(.text+0x8a): undefined reference to `sem_wait'
Producers_Consumers.c:(.text+0x96): undefined reference to `sem_post'
Producers_Consumers.c:(.text+0xa2): undefined reference to `sem_post'
collect2: ld returned 1 exit status
मैं क्या है मुझे यह भी पता मेरी जोड़ने विधि काम नहीं करेगा (यह एक सा बदसूरत वजह से जिस तरह से करने के लिए मैं अपने पुराने विधि से बाहर बातें टिप्पणी की दे सकते हैं), लेकिन मैं जब मैं अपने वाक्य रचना मुद्दों को ठीक करने के लिए है कि प्राप्त करेंगे:
#include <stdio.h>
#include <semaphore.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#define N 10 //Number of slots in buffer
typedef int semaphore; //Semaphores ae a special kind of int
sem_t mutex; //Controls access to critical region 1
sem_t empty; //Counts empty buffer slots N
sem_t full; //Counts full buffer slots 0
int count = 0; //What we're putting in
//int buffer[N];
void producer(void) {
sem_init(&mutex, 0, 1);
//sem_init(&empty, 0, N);
sem_init(&full, 0, 0);
while(1) {
sem_wait(&empty);
sem_wait(&mutex);
//printf("Empy: %d\n",empty);
//printf("Mutex: %d\n",mutex);
//printf("Both Downs Ran\n");
//buffer = buffer + 1;
sem_post(&mutex);
sem_post(&full);
//printf("Producer produced: %d\n",buffer);
}
}
void consumer(void) {
while(1) {
sem_wait(&full);
sem_wait(&mutex);
//item = buffer;
sem_post(&mutex);
sem_post(&empty);
//printf("Consumer consumed: %d/n",item);
}
}
void main() {
}
क्या आप सटीक त्रुटियां पोस्ट कर सकते हैं? – GoldRoger
टर्मिनल से कॉपी की गई त्रुटियों के साथ मूल पोस्ट अपडेट किया गया। – TheFatness