Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在tmp文件夹中打开文件时,使用信号量不起作用_C_Unix_Concurrency_Posix_Semaphore - Fatal编程技术网

C 在tmp文件夹中打开文件时,使用信号量不起作用

C 在tmp文件夹中打开文件时,使用信号量不起作用,c,unix,concurrency,posix,semaphore,C,Unix,Concurrency,Posix,Semaphore,因此,我尝试使用多进程并发(fork) 我首先在本地文件夹中运行了代码,代码运行正常。但是,当我在UNIX中尝试将文件设置到tmp文件夹时,我的代码没有使用信号量阻塞。在我看来,当从tmp文件夹打开一个文件时,每个进程将完成所有工作,而不是拆分工作,或者在某些罕见的情况下,一个进程将完成所有工作,而另外两个进程不知何故永远无法访问锁 让我发疯的是,如果它适用于本地文件,那么就没有理由在tmp文件夹中失败 基本目标是我有一组来自fork()的子进程,只有一个进程控制CS,即打开文件、从文件读取值、

因此,我尝试使用多进程并发(fork)

我首先在本地文件夹中运行了代码,代码运行正常。但是,当我在UNIX中尝试将文件设置到tmp文件夹时,我的代码没有使用信号量阻塞。在我看来,当从tmp文件夹打开一个文件时,每个进程将完成所有工作,而不是拆分工作,或者在某些罕见的情况下,一个进程将完成所有工作,而另外两个进程不知何故永远无法访问锁

让我发疯的是,如果它适用于本地文件,那么就没有理由在tmp文件夹中失败

基本目标是我有一组来自
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);