GVKun编程网logo

程序closures后文件能够locking多长时间?

14

本文将带您了解关于程序closures后文件能够locking多长时间?的新内容,另外,我们还将为您提供关于/proc伪文件的打开/closures策略、android–LogCat条目在内存中保存多

本文将带您了解关于程序closures后文件能够locking多长时间?的新内容,另外,我们还将为您提供关于/ proc伪文件的打开/closures策略、android – LogCat条目在内存中保存多长时间?、C ++文件夹不会删除,直到我closures程序、closure PHP闭包(Closure)初探的实用信息。

本文目录一览:

程序closures后文件能够locking多长时间?

程序closures后文件能够locking多长时间?

在我使用的几个脚本中,我有一个间歇性的问题。

有时脚本在尝试删除文件时失败。 根据由其他进程访问的文件导致的错误日志。 我猜测,窗口没有足够的时间来释放文件之后,对文件执行的操作结束。

在哪个窗口应该有时间再次释放文件之后,多less时间才是一个好的猜测?

一些支持格式为“ Device Xxx”的NT命名空间绝对path的API

如何以及何时使用/ dev / shm来提高效率?

自动检测文件更改并通过S3进行同步

将I / O驱动调度集成到OS内核中

File.Exists对不存在的文件返回true

如果Windows应用程序已经完成了文件处理,它应该立即关闭,因为大概他们关闭了文件句柄。 在文件关闭操作之后解锁文件没有任何延迟。

如果一个程序忘记关闭它们的文件句柄,但是结束,Windows将为它们释放它(不是立即)。 通常这个时间不长,但可以是任何时间,我没有看到花费时间超过几秒钟。 但是应该进行适当的清理以避免被锁定。

还值得一提的是,并不是所有的程序都以锁定的方式打开文件。 他们可以打开文件,指定他们想要给予其他进程的访问类型,还可以锁定部分文件。 他们可能会以完整的读/写权限打开文件到其他进程。

如果你不能控制没有关闭它的文件句柄的进程,但是你需要执行它,你可以编写一些循环来继续尝试文件几秒钟。

正如另一个用户已经发布,如果文件已经正确关闭,应该立即完成 – 直到操作系统排除,否则将有一个不确定的延迟。

始终,正确地处理资源。

/ proc伪文件的打开/closures策略

/ proc伪文件的打开/closures策略

我写了一个Linux的C实用程序,它每秒检查一次/ proc / net / dev的内容。 我使用fopen(“/ proc / net / dev”,“r”)打开文件,然后在完成时打开fclose()。

由于我使用的是“伪”文件,而不是真正的文件,每次读取文件时是否打开/closures文件,或者应该在应用程序启动时打开文件并保持全部打开? 该实用程序作为守护进程启动,因此可能会运行很长时间。

是否有可能使用python与Windows写入访问原始设备?

理解read()的问题

Linux上真的没有asynchronous块I / O吗?

如何将文件从一个文件夹复制到另一个文件夹

Python无法在r +模式下打开11gb csv,但在r模式下打开

没关系,不。 但是,缓存/缓冲可能存在问题,这意味着实际上最好(最安全)的做,并且每次重新打开文件。 既然你这么做很少,没有这样做就没有表现,所以我建议你保持现在的解决方案。

你想要的是无缓冲的阅读。 假设您不能切换到read()调用,请打开设备,然后将流设置为无缓冲模式。 这有另外的好处,当你完成后,不需要关闭流。 只要倒带一下,然后重新开始阅读。

FILE *f = fopen("/proc/net/dev","r"); setvbuf(f,NULL,_IONBF,0); while (running) { rewind(f); ...do your reading... }

总结

以上是小编为你收集整理的/ proc伪文件的打开/closures策略全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

android – LogCat条目在内存中保存多长时间?

android – LogCat条目在内存中保存多长时间?

什么时候LogCat日志从手机内存中删除?

解决方法

它不依赖于时间,而是依赖于使用的内存.

您可以使用adb logcat -g(通常返回介于64Kb和512Kb之间的值)来了解大小限制.

C ++文件夹不会删除,直到我closures程序

C ++文件夹不会删除,直到我closures程序

在我制作的游戏中,文本文件夹里面代表世界扑克,在这个游戏的加载菜单中我想要一个选项来删除保存。 我正在使用此代码来尝试删除保存:

hFind = FindFirstFile((dir+"/*").c_str(),&FindFileData); if (hFind){ do{ string s = FindFileData.cFileName; if(s.find('.')){//prevents prossesing of "." and ".." DeleteFile((dir+"/"+s).c_str()); } }while(FindNextFile(hFind,&FindFileData)); CloseHandle(hFind); } rmdir(dir.c_str());

这些文件夹中唯一的东西是3个文本文件,所以这个代码应该是足够的,但事实并非如此。 会发生什么事是目录中的所有文件都被删除,但不是文件夹,如果我尝试手动删除这个文件夹,或者在程序运行时以任何方式编辑它,windows会拒绝我访问。 但是一旦closures游戏,文件夹就会被删除。

我知道里面的文件被删除,因为我尝试了上面的代码与“rmdir(dir.c_str());” 并打开文件夹,所有的文件都不见了,也用上面的代码,如果我“删除”保存,然后尝试加载它,我没有世界,没有库存,表明文件已被删除。

我用removeDirectory试了一下,发生了同样的事情,它也说它已经成功删除,没有任何错误。

java在Windows中删除目录

如何将系统输出的输出存储到string中

MinGW与COLORREF和RGB拧紧

Windows 8上的lockAndInitHandle错误

JavaFX Maven插件部署.deb代替.exe文件

为什么会这样呢? 我怎样才能避免这一点,并使其正常工作?

任何帮助将不胜感激。

该问题是用以下代码fixxed:

hFind = FindFirstFile((dir+"/*").c_str(),&FindFileData)); CloseHandle(hFind); } findClose(hFind); rmdir(dir.c_str());

如何使用函数GetStorageFileName将训练文件添加到registry?

安装Python 3后安装Python 2.7

使用java代码退出batch file

查找屏幕分辨率创build线程问题

什么是Windows上最好的免费Scheme实现?

根据RemoveDirectory文档:

RemoveDirectory函数在关闭时标记要删除的目录。 因此,直到该目录的最后一个句柄关闭,该目录才被删除。

可能你的程序有目录作为它当前的工作目录,或者也许还有一个句柄来打开它。

在Windows中,rmdir是一个调用本地窗口函数的可比较函数,所以它将表现相同。

根本问题是代码在FindFirstFile返回的句柄上调用CloseHandle而不是FindClose 。

但是代码有更多的错误。 为了帮助未来的访问者,这是正确的代码。

HANDLE hFind = FindFirstFile((dir + "\*").c_str(),&FindFileData); // See 1 below if (hFind != INVALID_HANDLE_VALUE) { // 2 do { if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { // 3 const std::string s = dir + "\" + FindFileData.cFileName; DeleteFile(s.c_str()); } } while (FindNextFile(hFind,&FindFileData)); // 4 FindClose(hFind); // 5 } RemoveDirectory(dir.c_str()); // 6

Windows路径使用而不是/作为分隔符。 许多API都可以接受,但最终你会遇到一个不这样做的,所以最好使用正确的一个。

FindFirstFile在失败时返回INVALID_HANDLE_VALUE(非NULL)。 由于INVALID_HANDLE_VALUE不为零,因此不能简单地测试if (hFile) { ... } 。

API枚举文件和目录。 旧的代码试图过滤掉. 和..目录不正确,这可能导致它跳过一些文件,并尝试在其他目录上使用DeleteFile。 跳过所有目录更简单(也更容易理解)。

不要在FindFirstFile返回的句柄上调用CloseHandle。

请在由FindFirstFile返回的句柄上调用FindClose,但是只有在从FindFirstFile获得有效句柄的情况下才这样做。

只要你使用特定于Windows的API,你也可以一致地使用它们,而不是像rmdir一样使用库包装器。 库包装器有时会引入令人惊讶的限制或行为,虽然我认为在这种情况下rmdir会正常工作。

这仍然留下了一个重大的问题:它不处理路径中的Unicode(它需要您编译的ANSI限制在项目的其他部分的Unicode处理)。

closure PHP闭包(Closure)初探

closure PHP闭包(Closure)初探

关于程序closures后文件能够locking多长时间?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于/ proc伪文件的打开/closures策略、android – LogCat条目在内存中保存多长时间?、C ++文件夹不会删除,直到我closures程序、closure PHP闭包(Closure)初探的相关知识,请在本站寻找。

本文标签: