c# - 即使文件当前由另一个 Linux App-2(C++) 写入,Linux App-1(C#) 也不会引发文件访问错误
问题描述
我在 Linux (ubuntu) 服务器上运行的 C# .NET Core 应用程序中遇到了一个奇怪的问题。我们有 2 个应用程序正在运行。App1 开始创建一个文件并写入其中。App2 然后尝试访问该文件,但不会引发任何文件异常。
App1 C++ 代码:
char m_filePath[1024] = "/home/ubuntu/src/Test/123.txt";
mode_t perms = S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH;
const char buf[512] = "123";
int fd = open(m_filePath, O_RDWR | O_CREAT | O_SYNC |O_EXCL, perms);
if (fd >= 0)
{
std::cout<<"Wav file : {} Created successfully "<<std::endl;
}
while(1)
{
write(fd,&buf, 1);
}
App2 C# 代码:
var mediaFilePath = @"/home/ubuntu/src/Test/123.txt";
if (File.Exists(mediaFilePath))
{
var fs = File.OpenWrite(mediaFilePath);
fs.Close();
fs.Dispose();
Console.WriteLine("File FREE TO ACCESs");
}
File.OpenWrite() 不会引发任何 IO 异常,并且 App2 能够毫无问题地访问文件:(
我该如何解决这个问题?
解决方案
推荐阅读
- ftp - 在通过 FTP 推送代码时遇到 jenkins 的问题
- c++ - 如何为 const 和非 const 容器版本的迭代器定义类型
- google-apps-script - 如何从 Apps Scripts 中的文件 url 获取文件名
- log4j - log4j2 实现文件夹文件所有者和权限
- html - 字体真棒图标上出现意外的白色背景
- rsocket - 是否可以使用 RSockets 进行广播?
- java - 如何为每个套件创建单独的 testng-failed.xml 而不会覆盖?
- python - numpy索引到4维数组
- ios - CocoaPods 找不到 pod“CordovaPlugins”的兼容版本
- javascript - 将鼠标悬停在链接上时更改父 div 的 css