问题标签 [filehandle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4892 浏览

c - 如何使用 C 从 Windows 中的文件句柄中获取文件名?

我正在尝试从给定的文件句柄中检索文件名。

我已经看到GetFileInformationByHandle可能很有用,但它返回的结构不包含任何文件名信息(http://msdn.microsoft.com/en-us/library/aa363788%28v=VS.85%29.aspx)。

我怎样才能做到这一点?

编辑:

我尝试安装 Windows FileID API 以使 GetFileInformationByHandleEx 在 Windows XP 上运行。但是当包括 fileextd.h 我得到以下错误

从以下代码:

0 投票
1 回答
1206 浏览

c - 如何删除文本文件中的某一行?

你能帮我编写一个删除文本文件中某一行的程序吗?

我打算使用:

  1. fgets 从文本文件中捕获一行并将其存储在一个数组中,但我很困惑 fgets 如何将该行存储在一个数组中(它是否捕获该行并将其存储在第一个索引中,并且下次它捕获一行时会这将存储到下一个索引还是只覆盖数组的第一个索引?)

  2. 如果该行存储在不同的索引中,我将有一个条件,将用户的输入与捕获的 fgets 行进行比较,如果相等,它将跳过该行并执行规则,直到它到达文件末尾。

  3. 然后我会像这样关闭 fclose(stream) 文本文件并将其重新打开为“wt”以覆盖文件中写入的所有内容。

我的逻辑是否正确...或者您可以提出更好的解决方案...希望您能帮助我了解 fgets 如何将行存储在数组中...

顺便说一句,这是我正在尝试进行测试的代码:

0 投票
2 回答
209 浏览

regex - 帮助使用 perl 从同一文件名中提取文件的内容和值

对不起,如果这很冗长,但我有一个部分工作的 perl 脚本。我有一个正则表达式,可以提取其中一个foo|bar和给定字符串的前缀。但问题是我的字符串也是文件名,我也想打开并检索它的内容locale_col.dat.2010120813.png(见下面的预期输出)。

输出现在如下所示:

我需要帮助来调整它,以便一次性读取字符串列表(来自 FileList.txt 的文件名),从文件名路径中提取特定值(使用正则表达式)并打开文件名以获取其内容。我希望这是有道理的,还是我正在考虑将其分解为 2 个 perl 脚本?感谢您的输入。

代码(在制品):

FileList.txt 的内容:

列出的文件之一的示例内容:(我需要帮助来提取)

预期输出:

0 投票
3 回答
567 浏览

perl - Perl:通过 open() 没有 close() 创建僵尸

这是问题所在:我有一个守护进程,它从客户端获取请求,根据请求执行一个函数(来自某个模块)并向客户端返回一个答案。在 fork() 之后,我关闭了 STDIN、STDOUT 和 STDERR。一个功能是检查 dmesg。为此,我通过 open(DMESG, "/bin/dmesg |") 获得 dmesg 输出。读完后我没有关闭这个 fh,因为我认为它会在函数完成后自动关闭。但这并没有发生,每次调用 dmesg 我都会得到一个僵尸。

关于如何重新初始化 Perl 的 STDIN/STDOUT/STDERR?我发现“关闭 STDOUT 而不是重新打开的问题在于,如果您打开其他文件,它们可能会得到 fd 0,1 或 2 - 阻止您将来重新打开 STDOUT。” by jmanning2k 我认为这与它有关,但我真的不明白。我希望有人能给我解释一下。

我知道我可以避免这个问题,例如通过 qx(); 调用 dmesg; 或者只是关闭 fh 但我想了解僵尸来自哪里。

0 投票
3 回答
8887 浏览

perl - 我怎样才能使用 __DATA__ 两次?

我怎样才能使用__DATA__两次?

0 投票
3 回答
4279 浏览

perl - 写入 STDOUT 和打开“/dev/tty”的文件句柄有什么区别?

这两个例子有什么区别?

0 投票
3 回答
381 浏览

perl - Perl 中的文件句柄

而不是我习惯的典型文件句柄:

如何检索指向文件中行的指针,以便可以在 wiil 中推进这些指针?我正在尝试创建两个指向其相应排序文件的指针,以便我可以根据一个文件中的行是“小于”还是“大于”另一个文件中的行来推进指针。

注意:假设输入文件很大。

0 投票
4 回答
956 浏览

perl - Perl:附加到文件并获取新的行数

快速提问,我确定这是我对变量做的完全错误的事情,但是,这就是问题所在。

先上代码:

这是我得到的输出:

我验证了该文件正在被写入并附加到。有人可以为我指出正确的方向,了解如何设置、更新和正确调用变量吗?

0 投票
1 回答
217 浏览

perl - 4-参数-选择-问题

从 SELECT_TUT:

"... 用于有效地监控多个文件描述符,查看它们中的任何一个是否“就绪”或变为“就绪”;也就是说,查看 I/O 是否成为可能,或者任何一个“异常情况”发生的描述符......

那么 select() 的意义何在?我不能随时读写我的描述符吗?select() 的要点是它同时监视多个描述符,并在没有活动的情况下正确地使进程进入睡眠状态。Unix 程序员经常发现自己处于必须处理来自多个文件描述符的 I/O 的位置​​,其中数据流可能是断断续续的。如果您仅创建一系列 read(2) 和 write(2) 调用,您会发现其中一个调用可能会阻塞等待来自/到文件描述符的数据,而另一个文件描述符未使用但已为我准备好/O。select() 有效地应对了这种情况。”

有人可以解释一下,这意味着什么以及它是如何工作的,也许有一个小例子。

例如这里只选择了一个文件句柄,为什么我需要监控?

0 投票
1 回答
871 浏览

perl - 如何一次一行地合并多个文件句柄的数组或哈希中的文件中的特定列?

我将首先描述我正在使用的文件:

这是我想做的事情:

  1. 我有每个文件句柄的散列或数组groupI,指向非常大的制表符分隔的文本文件fileJ,每个文件大小为数百 MB。

  2. 我想遍历文件句柄,一次读取一个制表符分隔的行。我无法将所有文件的行读入内存。

  3. 一旦我完成了文件句柄的循环,然后我想要split每一行,从每个拆分数组(例如第五个字段)中获取特定的数据列,并将数据合并到一行输出中。

  4. 重复步骤 2 — 从每个文件句柄中获取一行 — 直到 EOF。

然后我会以groupA/mergedOutput.mtx,groupB/mergedOutput.mtx等结尾。

问题是我不知道如何正确执行步骤 2 和 3。

这是我到目前为止的代码:

一个问题似乎是以下代码不起作用:

如果我尝试打印出 的值$line,则会得到一个GLOB值:

我如何处理不当$line,或者在 Perl 中是否有更简单的方法来做到这一点?

谢谢你的建议。

编辑

这是固定代码:

感谢您的提示!