C 在tmp文件夹中打开文件时,使用信号量不起作用
因此,我尝试使用多进程并发(fork) 我首先在本地文件夹中运行了代码,代码运行正常。但是,当我在UNIX中尝试将文件设置到tmp文件夹时,我的代码没有使用信号量阻塞。在我看来,当从tmp文件夹打开一个文件时,每个进程将完成所有工作,而不是拆分工作,或者在某些罕见的情况下,一个进程将完成所有工作,而另外两个进程不知何故永远无法访问锁 让我发疯的是,如果它适用于本地文件,那么就没有理由在tmp文件夹中失败 基本目标是我有一组来自C 在tmp文件夹中打开文件时,使用信号量不起作用,c,unix,concurrency,posix,semaphore,C,Unix,Concurrency,Posix,Semaphore,因此,我尝试使用多进程并发(fork) 我首先在本地文件夹中运行了代码,代码运行正常。但是,当我在UNIX中尝试将文件设置到tmp文件夹时,我的代码没有使用信号量阻塞。在我看来,当从tmp文件夹打开一个文件时,每个进程将完成所有工作,而不是拆分工作,或者在某些罕见的情况下,一个进程将完成所有工作,而另外两个进程不知何故永远无法访问锁 让我发疯的是,如果它适用于本地文件,那么就没有理由在tmp文件夹中失败 基本目标是我有一组来自fork()的子进程,只有一个进程控制CS,即打开文件、从文件读取值、
fork()
的子进程,只有一个进程控制CS,即打开文件、从文件读取值、存储值、关闭文件、修改值、打开文件、写入值文件、关闭文件,以及结束CS。我正在使用POSIX信号量
tmp/file.txt在sem\u wait()/sem\u post()
中出现问题的原因是什么。任何指针都会有帮助
这两种代码之间的唯一区别是:
fd = open("Seq.txt", O_RDONLY);
vs
我需要发布更大的代码片段吗?了解路径名是如何解析的,这样将来就可以避免这些类型的错误 在线参考: 相关摘录: 如果路径名以“/”字符开头,则开始查找 目录是调用进程的根目录。(A)程序 从其父目录继承其根目录。通常 文件层次结构的根目录 如果路径名不以“/”字符开头,则开始 解析进程的查找目录是当前工作目录 进程的目录。 以“/”字符开头的路径名称为绝对路径名 路径名。不以“/”开头的路径名称为相对路径名 路径名 你可以浏览整页,这将非常有帮助 如果由于绝对路径名的长度,希望避免使用绝对路径名,
您也可以考虑使用“<代码>”()/代码> .< /p>可能打开的是找不到<代码> tMP/SEQ.txt< /Case>文件。您需要在代码中添加<代码> /<代码>吗?像这样的代码<代码> fd=打开(“/tMP/SEQ.txt”,OyrdDun)。请提供。上帝……该死。这很有效。我知道这很简单。谢谢。奇怪的是,我认为错误检查会捕捉到这一点。@Leruce open()调用失败时没有返回负值?不,跳过它,然后进入fd!=-1,然后继续编写。
fd = open("tmp/Seq.txt", O_RDONLY);