c-如何在没有线程和叉的情况下使用信号量



我目前正在开发一个学校项目(C语言(,该项目旨在创建能够一个接一个地写入共享内存的进程。我不能用多线程也不能用叉子。我只能有一个可执行文件,它必须根据需要运行多次。

例如,如果我先执行./main john,然后执行./main toto,John将能够在共享内存中进行写入,而Toto则必须等待John解锁信号量。

但我找不到任何文档来清楚地解释它是如何在不做线程、fork等的情况下工作的。

有人能帮我吗?感谢

假设使用Linux:

因为不允许使用多线程,所以可以忽略pthread信号量。也许你正在寻找的是system-VIPC信号量:

https://man7.org/linux/man-pages/man7/sysvipc.7.html

这些可以在进程之间使用。

system-V IPC还提供共享内存处理功能。

Posix-semahores和shm API也是另一种选择:https://linux.die.net/man/7/sem_overviewhttps://man7.org/linux/man-pages/man7/shm_overview.7.html

https://opensource.com/article/19/4/interprocess-communication-linux-storage有使用POSIX信号量同步共享内存访问的示例(在本文的第二部分中,通过文件锁定示例(。

它与同步线程没有什么不同,只是它使用操作系统设施进行进程间通信。

POSIX信号量在POSIX系统上可用,特别是许多*nixe。

相关内容

最新更新