小编Nik*_*nas的帖子

使用c中的信号量同步两个子进程

我必须创建一个同步两个进程的程序,每个进程只打印一个字母,这样每当我们观察程序的输出时,"A"和的数量之差"B"就不大于2.

所以这将被接受:

BAABBAABBABA
Run Code Online (Sandbox Code Playgroud)

这不是因为它打印了4个B而且只有2个A:

ABBABB
Run Code Online (Sandbox Code Playgroud)

所以对于初学者我决定使用POSIX信号量.我创建了两个信号量,使用sem_open Then我创建了两个子进程给予他们所有权限.对于每个子进程,我打开我按照手册页中所描述的创建的信号量sem_open并操作它们.

我不认为这是的逻辑sem_postsem_wait那这里有毛病,因为该方案似乎忽略它们.

所以我的问题是.出了什么问题?

编辑:我真的不需要问题的解决方案.仅作一些指导将非常感谢和欢迎作为答案.先感谢您!

#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <semaphore.h>

int main(void){



  sem_t *semA = sem_open("/semA", O_CREAT|O_EXCL, S_IRWXU | S_IRWXG | S_IRWXO, 0);   //Initialize semaphore(= 0) for process A
  sem_t *semB = sem_open("/semB", O_CREAT|O_EXCL, S_IRWXU | S_IRWXG | S_IRWXO, 0);   //Initialize semaphore(= 0) for process B


  if (fork()){      // …
Run Code Online (Sandbox Code Playgroud)

c synchronization fork semaphore process

6
推荐指数
1
解决办法
504
查看次数

标签 统计

c ×1

fork ×1

process ×1

semaphore ×1

synchronization ×1