gpt4 book ai didi

c++ - 父子进程之间的 POSIX 信号量

转载 作者:行者123 更新时间:2023-11-28 04:03:43 26 4
gpt4 key购买 nike

<分区>

我希望父进程和子进程交替输出以下内容

parent : 2 x 1 = 2
child : 2 x 2 = 4
parent : 2 x 3 = 6
.
.
child : 2 x 10 = 20

我已经使用信号量尝试了下面的代码。

#include <stdio.h>
#include <semaphore.h>
#include <unistd.h>

sem_t mutex_odd,mutex_even;

int main()
{
int o=1;e=2;
pid_t pid = fork();
sem_init(&mutex_odd,0,1);
sem_init(&mutex_even,0,1);
if(pid>0)
{
while(o<=9)
{
sem_wait(&mutex_even);
printf("parent : 2 x %d = %d\n", o, 2*o);
o+=2;
sem_post(&mutex_odd);
}
}
else if(pid == 0)
{
while(e<=10)
{
sem_wait(&mutex_odd);
printf("parent : 2 x %d = %d\n", e, 2*e);
e+=2;
sem_post(&mutex_even);
}
}
else
{
printf("Child process couldn't be created!\n");
exit(0);
}
return 0;
}

但是输出如下图。控制只是停留在那里而不会终止程序。

parent : 2 x 1 = 2
child : 2 x 2 = 4

这是死锁状态吗?如何解决这个问题?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com