我必须创建一个同步两个进程的程序,每个进程只打印一个字母,这样每当我们观察程序的输出时,"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_post和sem_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)