我对这段代码有一个问题。我应该创建一个结构并在父亲创建的 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 个孩子和父亲)的所有这些数据。
我在做什么坏事?在此先感谢并致以最诚挚的问候,