使用QNX信号量实现进程间同步和互斥

作者:佚名 上传时间:2023-03-31 运行软件:C语言 软件版本:QNX 7.0 版权申诉

本示例代码展示了在QNX系统中如何使用信号量实现进程间的同步和互斥。通过控制信号量的值来实现进程的阻塞和唤醒。使用P/V操作实现对信号量的加减操作,控制多个进程的访问。

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

void print_msg(const char *msg)
{
    printf("%s\n", msg);
}

int main(int argc, char *argv[])
{
    sem_t* mutex; //信号量变量

    if ((mutex = sem_open("/mutex", O_CREAT, 0644, 1)) == SEM_FAILED) {
        perror("sem_open");
        exit(EXIT_FAILURE);
    }
    pid_t pid;
    pid = fork();

    if (pid < 0) { /* error occurred */
        fprintf(stderr, "Fork Failed\n");
        return 1;
    } else if (pid == 0) { /* child process */
        sem_wait(mutex);
        print_msg("child process executing critical section...");
        sleep(3);
        sem_post(mutex);
        exit(0);
    } else { /* parent process */
        sem_wait(mutex);
        print_msg("parent process executing critical section...");
        sleep(3);
        sem_post(mutex);
        print_msg("parent process exiting critical section...");
        sem_close(mutex);
        sem_unlink("/mutex");
        exit(0);
    }

    return 0;
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
使用QNX信号量实现进程同步互斥
本示例代码展示了在QNX系统中如何使用信号量实现进程间的同步和互斥。通过控制信号量的值来实现进程的阻塞和唤醒。使用P/V操作实现对信号量的加减操作,控制多个进程的访问。 #include <s
QNX 7.0
C语言
2023-03-31 15:10
进程同步互斥
关于系统之间使用的api的使用和进程的同步互斥的有关处理,非常有用。
PPT
0B
2019-09-09 02:50
QNX使用信号量实现进程同步互斥
在QNX操作系统中,使用信号量可以实现进程之间的同步和互斥。信号量是一种计数器,在进程中使用wait()或signal()函数进行操作。此示例代码演示了如何在QNX上使用信号量实现进程同步和互斥的基本
QNX 7.0
QNX Software Systems
2023-04-19 09:24
利用信号量实现进程同步
压缩包内含4个文件:a.c,b.c是两个源文件,分别用来模拟读端和写端。semaphore.h和semaphore.c主要实现了sem_init,sem_p,sem_v,sem_del这四个函数(函数
ZIP
0B
2019-05-27 21:36
linuxipc带有信号量同步互斥方式的进程通信
本案例,增加同步互斥院里的 linux间进程之间的通信代码,很有学习的意义
GZ
0B
2019-02-21 16:07
进程同步互斥源代码
进程间的同步和互斥源代码,不过好像不怎么完整
CPP
0B
2019-05-15 23:27
使用互斥对象Mutex实现不同进程线程同步
使用互斥对象(Mutex)实现不同进程间线程同步
RAR
0B
2019-07-29 09:19
使用互斥实现进程共享内存
共享数据可能在多个线程或多个进程中读写,需要进行同步保护
RAR
0B
2020-05-19 16:20
进程实现进程互斥同步
A:向盘子里放入一个苹果,B:从盘子里取出一个苹果,C:向盘子里放入一个梨,D:从盘子里取出一个梨
7Z
0B
2018-12-20 04:02
linux进程通信同步互斥
测试环境:64位ubuntu13LTS功能说明:使用互斥锁+条件变量+共享内存的方式实现进程(或线程)间的通信示例
C
0B
2019-09-04 04:38