问题标签 [dup]

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 投票
1 回答
139 浏览

c - fopen + 流 _dup 中的流描述符丢失

我有以下代码示例(在 Windows 中):

我需要 fd 的值以备将来使用。如何在不丢失fd值的情况下从文件中读取?

0 投票
8 回答
38973 浏览

c - 有人可以解释 C 中的 dup() 做什么吗?

我知道 dup, dup2, dup3 “创建文件描述符 oldfd 的副本”(来自手册页)。然而我无法消化它。

据我所知,文件描述符只是跟踪文件位置及其方向(输入/输出)的数字。这不是更容易吗

每当我们想要复制文件描述符时?

还有别的..

dup() 为新描述符使用编号最小的未使用描述符。

这是否意味着如果我们假设我们有close() -ed 其中之一,它也可以作为值stdinstdoutstderr ?

0 投票
1 回答
1970 浏览

c - dup2 到文件的套接字

大家,冬天来了,请注意保暖,保持健康。在思考工作的过程中,我对 fd dup2 的功能提出了一些问题。我创建了一个套接字服务器和一个客户端。服务器发送,客户端接收数据。但是现在我想将服务器套接字 fd 复制到文件 df 中,以便让客户端直接从位于服务器中的文件中读取数据。我写喜欢

但是,它不起作用,这可能吗?你能给我什么建议吗?谢谢

0 投票
4 回答
17536 浏览

c - 将 STDOUT 和 STDERR 重定向到 C 中的套接字?

我正在尝试将 STDOUT 和 STDERR 重定向到套接字。

我做了:

不知何故,它只显示了输出的前一小部分。

例如,当我尝试执行 ls 或 mkdir 时,它显示在“mkdir”上。

有什么问题?

我尝试了以下方法,但我只能重定向 STDOUT 或 STDERR 之一

非常感谢。

0 投票
3 回答
1611 浏览

c - 为什么 close() 系统调用刷新输出?

这是我的代码:

我实际上想要做的只是使用 printf() 而不是 write() 系统调用将“堆栈溢出”打印到文件中。

它没有将内容打印到文件中。但我观察到的一件事是,如果我删除代码:

它按预期将内容打印到文件中。但我不明白为什么。我打印了内容,然后只有我关闭了 newfd。

这是什么原因?

0 投票
3 回答
2218 浏览

ruby - 'dup' 后仍引用实例变量

我有一个类的对象,我想用dup. 其中一个实例变量是一个数组,它似乎正在引用它。我以为 dup 实际上创建了一个 DUPLICATE。

这是我的 IRB 会议:

我希望a保持不变,因为dup创建了一个全新的变量,而不是引用。

另请注意,如果您要替换[1,2,3]为 in 中的标量G::initializedup则不会引用它。

0 投票
5 回答
9942 浏览

ruby - Ruby dup/clone 递归

我有一个像这样的哈希:

我需要这个哈希的副本,更改不应该影响原始哈希。

当我尝试时,

在这里您可以看到project['duration']原始哈希中的 已更改,因为project是另一个哈希对象。

我希望哈希是dupedcloned递归的。我怎样才能做到这一点?

0 投票
1 回答
434 浏览

c - 在 C 中重定向标准输出时的奇怪行为

我正在尝试将标准输出重定向到一个文件,然后将其恢复为 C 中的原始文件,但我面临以下奇怪的问题 - 以下代码成功
in stdout
in stdout
地写入标准输出和in file相应的文件中,这一切都可以。

但是,删除我的主要功能的第一行:

导致 in file
in stdout
被写入标准输出并且文件中没有写入任何内容。我想知道这是怎么发生的?谢谢你的帮助。

0 投票
3 回答
4910 浏览

python - 从 python 重定向标准输出以进行 C 调用

这是here的一个后续问题,具体涉及其答案


从 python 模块中,我调用了一个简单地打印到标准输出的Hello World可执行文件。Hello World我有兴趣将该输出重定向到 pythonStringIO并遇到这个答案,这几乎把我带到了解决方案。

这个答案的关键部分是这个代码段:

我也想恢复重定向之前的标准输出。

问题

  1. 上面的函数到底发生了什么?
    • 什么是dupdup2做什么?
    • 是什么/dev/null
    • 8号线在做什么?( sys.stdout = os.fdopen(newstdout, 'w'))
  2. 如何将标准输出存储在StringIO对象中?
  3. 调用Hello World程序后如何恢复标准输出?

我很确定,一旦我得到问题 1 的答案,问题 2 和 3 的答案就会很容易。无论如何,我决定发布它们,以便将问题 1 的答案推向我想去的方向。

0 投票
1 回答
10637 浏览

python - python中的dup、dup2、tmpfile和stdout

这是here的后续问题。


我想去的地方

我希望能够暂时将标准输出重定向到一个临时文件,而 python 仍然能够打印到标准输出。这将涉及以下步骤:

  1. 创建 stdout ( new)的副本
  2. 创建临时文件 ( tmp)
  3. 将标准输出重定向到tmp
  4. 告诉 pythonnew用作标准输出
  5. 重定向tmp到“真正的”标准输出
  6. 告诉 python 再次使用“真正的”标准输出
  7. 阅读并关闭tmp

执行

我尝试通过以下方式实现上述内容:

我想在这里休息一下来总结一下。
直到此处的控制台输出应为:

sil应该是这样的:['0.3\n']. 所以直到这里,一切都像魅力一样运作。但是,如果我像这样再次重做上面的脚本:

发生错误,输出如下所示:

sil读取:['0.3\n', '']

换句话说:第二个Func("1.3", True)无法写入临时文件。

问题

  1. 首先,我想知道为什么我的脚本不能像我希望的那样工作。意思是,为什么只能在脚本的前半部分写入临时文件?
  2. 我对 and 的用法还是有点dup疑惑dup2。虽然我认为我了解将标准输出重定向到临时文件的工作原理,但我现在完全知道为什么os.dup2(new, 1)要做它正在做的事情。也许答案可以详细说明我的脚本中的所有dupdup2s 在做什么^^