C shmat()在子进程中使用时返回错误
我试图在子进程中使用IPC共享内存,该共享内存是在其父进程中创建的,其键值与子进程中使用的键值相同。 父进程在共享内存中存储一些值,我想在子进程中访问这些值 我为子进程编写了以下代码:C shmat()在子进程中使用时返回错误,c,C,我试图在子进程中使用IPC共享内存,该共享内存是在其父进程中创建的,其键值与子进程中使用的键值相同。 父进程在共享内存中存储一些值,我想在子进程中访问这些值 我为子进程编写了以下代码: if ((p_id = fork()) < 0) { perror("fork"); return 1; } if(p_id == 0) { int element=-1; int *front; int *queue[100]; int *rear;
if ((p_id = fork()) < 0)
{
perror("fork");
return 1;
}
if(p_id == 0)
{
int element=-1;
int *front;
int *queue[100];
int *rear;
key1=5678;
int queue_index=0,ii;
for(queue_index=0;queue_index<count_machine_type;queue_index++)
{
if((queue_c[queue_index] = (int *)shmat(shmid[queue_index],0,0))==(int *)-1)
printf("error in shmat queue\n");
key1+=1;
}
if(( front_c = (int *)shmat(shmid_front,0,0))==(int *)-1)
printf("error in shmat front\n");
if(( rear_c = (int *)shmat(shmid_rear,0,0))==(int *)-1)
printf("error in shmat rear\n");
}
if((p_id=fork())<0)
{
佩罗尔(“福克”);
返回1;
}
如果(p_id==0)
{
int元素=-1;
内部*正面;
int*队列[100];
内部*后部;
键1=5678;
int queue_index=0,ii;
对于(queue_index=0;queue_index)当系统调用返回一个错误时,您应该检查它是什么错误。使用例如打印一个关于错误的漂亮的描述性字符串来执行此操作。或者使用并传递(这是包含实际错误代码的变量)来打印它。当系统调用返回错误时,您应该检查它是什么错误。使用例如打印有关错误的漂亮描述性字符串来执行此操作。或者使用并传递(这是包含实际错误代码的变量)来打印它。