【发布时间】:2021-08-18 16:37:07
【问题描述】:
我目前正在研究一个学校项目(C 语言),该项目旨在使可以一个一个写入共享内存的进程。 我不能使用多线程,也不能使用 fork。 我可以只有一个可执行文件,它必须运行任意多次。
例如,如果我这样做:./main john 然后./main toto,John 将能够在共享内存中写入,而 Toto 必须等待 John 解锁信号量。
但是我找不到任何文档可以清楚地解释它是如何工作的不做线程、分叉等。
有人可以帮助我吗?谢谢
【问题讨论】:
-
搜索库pthread.h和semaphore.h,基本上你需要创建两个线程并将信号量放在临界区(线程可以共享一个公共变量)。如果你使用的是 Linux,你可以输入“man pthread”来获取库的手册。
-
标题说没有线程
-
如果可以通过
sem_open获取进程间信号量(如果必须通过semget)。或者获取一个独占的、咨询文件锁(fcntl(F_SETLK)/lockf或flock)。您的教授可能不允许线程强制您考虑进程间同步,并且不允许(显式)分叉以防止您轻松继承进程间信号量(即,您必须重新获取它在每个过程中)。如果有问题请回到这里。祝你好运。
标签: c multithreading semaphore shared-memory