このコードには 1 つの問題があります。1 つの構造を作成し、それを親から作成された 5 つの新しいプロセスで共有する必要があります。
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <time.h>
struct compartido {
int pid1, pid2, pid3, pid4, pid5;
int propietario;
int contador;
int pidpadre;
};
struct compartido var;
int main(int argc, char *argv[]) {
key_t llave1,llavesem;
int idmem,idsem;
llave1=ftok("/tmp",'a');
idmem=shmget(llave1,sizeof(int),IPC_CREAT|0600);
if (idmem==-1) {
perror ("shmget");
return 1;
}
var=shmat(idmem,0,0); /*This line is giving the error*/
/*rest of the code*/
}
正確なエラーは次のとおりです: エラー: タイプ 'void *' からタイプ 'struct compartido' に割り当てるときに互換性のないタイプ
6 つのプロセス (5 人の子供と父親) からのすべてのデータを表示および変更できるようにするには、この構造を共有変数に入れる必要があります。
私が悪いことをしている?よろしくお願いいたします。