[英]Synchronization between two processes using semaphores in c
我有一个任务,我必须用 C 语言编写一个程序来管理文件的访问和读/写。
当程序启动时,它应该创建两个进程(使用 fork())。
- 第一个进程将负责初始写入文件(该文件是一个文本文件,从a到z有2000个随机字符)。
- 在第一个进程完成写入后,第二个进程将负责从文件中读取。
我的问题是:
如何通过semaphores(sem() call system)同步执行顺序,保证第一个进程总是先启动,第二个进程只在第一个进程写完后才启动?
我可以推荐使用二进制信号量:// https://www.freertos.org/xSemaphoreCreateBinary.html
https://controllerstech.com/how-to-use-binary-semaphore-in-stm32/
如果您在嵌入式环境中工作,我建议您使用 Tasknotification,因为它们不太需要内存,因此可能更适合功能较弱的系统。 https://www.freertos.org/RTOS-task-notifications.html
信号量通过fork()
继承。 ( POSIX.1-2017 )
因此,一种简单的方法是在读取器存在之前将信号量初始化为零, fork()
子读取器,它在读取之前等待信号量。 当父 writer 完成时,它发布信号量,释放孩子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.