问题标签 [dup2]

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 投票
2 回答
181 浏览

exec - 多管链

我很绝望,我正在寻找一个月的多管道链的参考/源代码,这意味着我可以运行一些东西:

请不要在 tee 处理文件时将我发送到 bash/tee/$... 命令,而 bash 太复杂而无法理解...

请注意,顺序无关紧要,完成的第一个链也将被处理。

0 投票
2 回答
1268 浏览

c - C中的多管

我正在尝试在 C 中实现多个管道,解决方案应该是:

并为:

程序的输出不是确定性的,一旦我看到正确的结果,一旦我看到不同的结果。看起来 dup2 没有像我预期的那样运行,如果我 dup2 多次并且对于从结果文件描述符中读取的每个文件描述符 - 看起来它对复制的文件描述符有影响?

如果它像我在设计上提到的那样工作,我需要为两者使用哪个系统调用?

0 投票
2 回答
658 浏览

c - Chang中的多管

我正在尝试实现将运行多个 shell 命令链的程序:

等等...

在子进程上运行 strace 时,它​​卡在从管道上读取,在主进程上运行 starce 时,它​​也卡在读取上...管道缓冲区是 64K,我一次只为每个管道写入 4k

这是怎么回事?!

谢谢!!!

0 投票
1 回答
1151 浏览

c++ - 使用 C++ dup2 写入文件

好吧,我正在尝试从一个文件中读取并写入另一个文件。

我还有其他要添加的内容,例如从第一个文件中获取信息,但为了测试,我试图让它写入第二个文件。

我的理解是 dp2() 调用之后的所有内容都会输出到第二个参数。对?

0 投票
8 回答
38973 浏览

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

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

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

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

还有别的..

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

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

0 投票
2 回答
1001 浏览

c++ - C++ dup2 和 execl

我正在处理一项任务,我需要创建管道以便其他程序处理不同的功能。我能够通过命令行进行管道传输没问题,这很容易。然而,使用 dup2 和 execl 对我来说很棘手。在某一时刻,我能够从程序的一个部分获得输出,但它没有从另一部分读取任何内容。

这是我所拥有的:

管道.cpp

第 1 部分.cpp

第 2 部分.cpp

好的,因此 pipeline.cpp :分叉两次并在两个孩子之间创建一个管道。然后每个人都使用 excel 将其进程替换为程序 part1 和 part2。所以我的理解是第 1 部分程序将运行,并且它输出的任何内容都将由运行第 2 部分的第二个孩子拾取,并且从那里第 2 部分将正常输出,因为它的输出描述符没有更改。我在这里遗漏或误用了什么吗?

0 投票
2 回答
3738 浏览

c - dup2 bad file descriptor error

I'm trying to implement multiple piping using a tutorial I got from this website. I seem to get a bad file descriptor error after executing the function that takes care of multiple piping. When I'm duping for the first time it sends me this error. Here's the code:

Maybe there's a leakage somewhere or it can't find the descriptor. I don't seem to know where the problem is. What have I done wrong? Thanks.

Edited code:

0 投票
1 回答
632 浏览

c - dup2 不仅仅是复制文件描述符吗?

首先,我打开一个文件,然后我dup2用来复制文件描述符。为什么,当第一个文件描述符关闭时,我仍然可以通过另一个文件描述符读取文件吗?

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 投票
3 回答
2784 浏览

c - 进程之间的管道链

我想要一个父母和两个孩子。

父母从文件“a.txt”中读取并将槽管道发送给第一个孩子;第一个孩子读取字符并将小写字母字符发送给第二个孩子。

第二个孩子在“b.txt”中打印每个不同的字符和出现次数(每行),然后通过管道向父级发送不同字符的数量。父母打印第二个孩子的结果。

我已经完成了从父母到 1 个孩子的管道,为了测试我已经把管道放回了父母。我想不通的是如何让管道进入第二个孩子。我一直在寻找有关信息,dup2但我不知道如何使它工作。