27得票8回答
有人能解释一下C语言中的dup()函数是做什么用的吗?

我知道dup、dup2、dup3会“创建文件描述符oldfd的副本”(摘自man页面)。但是我无法理解。 据我所知,文件描述符只是用于跟踪文件位置和方向(输入/输出)的数字。直接复制它们不是更容易吗?fd=fd2; 每当我们想要复制文件描述符时? 还有一些其他的事情... dup(...

25得票6回答
popen()函数能否像pipe()+fork()一样生成双向管道?

我正在使用C++(主要是C)在模拟文件系统上实现管道。它需要在宿主shell中运行命令,但在模拟文件系统上执行管道操作。 我可以使用pipe(), fork(), 和 system()系统调用来实现这一点,但我更喜欢使用popen()(它处理创建管道、fork进程和将命令传递给shell)。...

20得票2回答
使用dup2进行管道传输

我该如何使用dup2来执行以下命令?ls -al | grep alpha | more

15得票3回答
管道,dup2和exec()

我需要编写一个可以运行管道的shell。例如像ls -l | wc -l这样的命令。我已经成功解析了用户输入的命令,如下所示: "ls" = firstcmd "-l" = frsarg "wc" = scmd "-l" = secarg 现在我需要使...

14得票1回答
在C语言中,如何使用dup2将STDOUT_FILENO重定向到/dev/null,并在之后将其恢复回原始值?

我有一项作业正在进行中,但是我难以完成它。这个想法是编写一个名为if.c的程序,它执行一个程序,如果成功执行第一个程序,就会执行第二个程序。我应该抑制第一个程序的标准输出,并取消抑制第二个程序的标准输出。我在多个测试中都收到错误消息。例如:"./if echo no then echo yes...

13得票2回答
使用dup2时出现竞态条件

这篇关于 dup2 系统调用的手册页面表示: EBUSY(仅适用于Linux)在open(2)和dup()的竞态条件下,dup2()或dup3()可能会返回该错误。 它所说的竞态条件是什么?如果 dup2 返回EBUSY 错误,我该怎么办?是否应像处理 EINTR 的情况一样重试?

11得票3回答
将Python的标准输出重定向到C函数

这是一个关于此问题的后续提问,特别涉及其回答。 我正在调用一个Hello World可执行文件(executable),它仅将Hello World打印到标准输出(stdout)。我想重定向该输出到Python的StringIO,并发现这个答案几乎让我实现了解决方案。 这个答案的关键部...

9得票6回答
在C语言中使用fork()、pipe()、dup2()和exec()时遇到了问题

这是我的代码: 在这里: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <wait.h> #include <readline/readline....

8得票1回答
了解dup2和关闭文件描述符

我发布我的代码只是为了让问题更加清晰明了。我并不是在寻求你的帮助来修复它,我更想理解dup2系统调用,但我从手册和其他stackoverflow问题中并没有完全掌握它。 pid = fork(); if(pid == 0) { if(strcmp("STDO...

8得票1回答
dup2()在C中是什么意思?

我在手册中查过,但仍然不理解... 举个例子,假设你有dup2(f1,0)。那么它会将文件描述符1和标准输入stdin交换,然后锁定stdin吗?