#include <stdio.h>
#include <sys/types.h>
#include <iostream>
#include <unistd.h>
#include <fstream>
#include <string>
#include <semaphore.h>
using namespace std;
int main(int argc, char *argv[]){
int pshared = 1;
unsigned int value = 0;
sem_t sem_name;
sem_init(&sem_name, pshared, value);
int parentpid = getpid();
pid_t pid = fork();
if (parentpid == getpid()){
cout << "parent id= " << getpid() << endl;
sem_wait(&sem_name);
cout << "child is done." << endl;
}
if (parentpid != getpid()){
cout << "child id= " << getpid() << endl;
for (int i = 0; i < 10; i++)
cout << i << endl;
sem_post(&sem_name);
}
sleep(4);
return 0;
}
wynik powinien być:dlaczego semafor nie działa?
parent id 123456.
child id 123457.
0
1
2
3
4
5
6
7
8
9
child is done.
wyjścia programu, lecz nigdy nie sygnalizuje semafora.
Witamy U & L! mamy twój kod i jaki powinien być wynik ... jaki jest rzeczywisty wynik? jak się masz pewność, że semafor nigdy nie jest sygnalizowany? czy możesz edytować swoje pytanie, aby je dodać. Do tej pory nie wydaje mi się, aby znaleźć coś złego w kodzie –