Articles of 文件

显示哪些文件在Linux中写入的工具?

我在IOStat中发现,我的应用程序的某些部分正在广泛地编写,但我不知道它是哪个进程以及它正在写入哪个文件。 在Vista中有一个工具可以显示在过去30秒内活动的文件。 有没有类似的Linux?

seekg()读取文本文件时奇怪的偏移量

我试图得到文件的最后一行,使用这里描述的逻辑最快的方式来只读取文本文件的最后一行? ,但我得到一些奇怪的exception: score.seekg(-2, ios::cur); 重置我的stream到相同的字符,所以我得到无限循环。 但是,将其设置为-3完美: fstream score("high_scores.txt"); //open file if(score.is_open()) //file exist { score.seekg(0, ios::end); char tmp = '~'; while(tmp != '\n') { score.seekg(-3, ios::cur); if((int)score.tellg() <= 0) //start of file is start of line { score.seekg(0); break; } tmp = score.get(); cout << tmp << "-"; } } 再次,问题是 – 这个代码只适用于seekg()偏移-3 ,理论上,它应该与-2 。 […]

从文件并发处理

考虑下面的代码: std::vector<int> indices = /* Non overlapping ranges. */; std::istream& in = /*…*/; for(std::size_t i= 0; i< indices.size()-1; ++i) { in.seekg(indices[i]); std::vector<int> data(indices[i+1] – indices[i]); in.read(reinterpret_cast<char*>(data.data()), data.size()*sizeof(int)); process_data(data); } 我想使这个代码并行,尽可能快。 使用PPL进行parallizing的一种方法是: std::vector<int> indices = /* Non overlapping ranges. */; std::istream& in = /*…*/; std::vector<concurrency::task<void>> tasks; for(std::size_t i= 0; i< indices.size()-1; ++i) { in.seekg(indices[i]); std::vector<int> data(indices[i+1] […]

为什么读取文件再读取速度更快?

SIZE = 1<<16 def justread(file): with open(file, 'rb') as f: while f.read(SIZE): pass 我第一次在一个700MB的文件上运行这个function需要19秒。 当我重复 再次读取相同的文件所花费的时间下降到0.5secs。 我用很多文件重复了这一点,结果是相似的。 这里发生了什么?

调用posix_spawn时closures所有文件句柄

我想使用posix_spawn(…)(或者非常相似的东西)产生一系列进程。 这个函数接受一个posix_spawn_file_actions_ttypes的参数,它允许我指定如何处理打开的文件句柄。 从文档中我可以确定,所有文件都从调用进程inheritance,并根据posix_spawn_file_actions_t结构中的信息进行修改。 我希望所有文件都未被生成的进程打开(stdin,stdout和stderr除外)。 有谁知道如何做到这一点? 显然这可以在一些实现中使用'POSIX_SPAWN_CLOEXEC_DEFAULT'spawn属性标志来完成,但是这在我的平台上是不可用的。 我也可以使用fcntl(…)在打开文件的时候指定'close on exec',但是我觉得这个问题的一个更加本地化的解决scheme是可取的。

使用lsoffind一个打开的文件最快的方法是什么?

我试图testing一个文件,如果它是打开使用lsof。 有没有比这更快的方法? $result = exec('lsof | grep filename | wc -l'); if($result > 0) { //file is open } 我想他们一定是一个方法来testing一个文件,如果你知道文件名。 我真正需要的是真实的还是虚假的。

为什么.gitignore.txt文件在windows10中显示它的名字?

最近我用webapp生成器搭build了一个项目。 它创build了两个文件.gitignore和.gitattributes 。 两者都显示Text Documenttypes的Text Document扩展但是当我按F12编辑任何一个人的名字,那么它有空的名字。 这里是快照: 我的问题是为什么窗口不显示为.gitignore的名称?

读取和写入一个大文件,而不是一个小块的磁盘一次的缺点?

我主要在基于Windows和Windows CE的系统上工作,其中CreateFile , ReadFile和WriteFile是工作马,无论是在本地Win32域还是在托pipe的.Net域中。 到目前为止,我一直没有任何明显的问题写或读大块文件,而不是循环,直到处理几个较小的块。 我通常将IO工作委托给后台线程,在完成时通知我。 但是看看文件IO教程或“教科书示例”,我经常会发现“小块循环”,而没有解释为什么它被使用,而不是更明显(我敢说!)“一次完成”。 我有什么缺点,我没有明白? 澄清: 通过大文件,我比较了我的单块与多个块。 我提到的多个块的例子通常在Windows CE上有1024个字节的大小,在桌面上有10个大小。 我的大文件通常是二进制文件,如手机等相机的照片,大小顺序为2-10 MB。 换句话说,不接近1 GB。

Linux上的C ++ makefile具有多个* .cpp文件

我正在尝试使用多个文件makefile。 有人能帮我吗? 我有的文件是file1.cpp,file2.h和main.cpp file1.cpp包含我的function。 file2.h包含我的函数的声明。 main.cpp [在代码中包含file2.h] file1.cpp [在代码中包含file2.h] 我做了 all: main gcc -g -Wall -o main main.cpp 但是当我尝试编译时,却给了我大量的错误。 我的代码在日食上工作得很好。

只解压缩特定的扩展名

我有一个zip文件夹包含.jpg,.png,.gif图像的目录。 我想解压每个档案,只把图像放在一个文件夹中,档案的名称。 所以: files/archive1.zip files/archive2.zip files/archive3.zip files/archive4.zip 打开archive1.zip – 以sunflower.jpg,rose_sun.gif。 制作文件夹files / archive1 /并将图像添加到该文件夹​​,以便files / archive1 / folder1.jpg,files / archive1 / rose_sun.gif。 对每个存档执行此操作。 我真的不知道如何做到这一点,所有的build议都是值得欢迎的。 我有超过600个档案,一个自动解决scheme将是一个救生员,最好是一个Linux解决scheme。