问题标签 [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.
c - dup 和 dup2 命令
我想要做的是将 ls 命令的输出放在一个文件中,然后使用 grep 命令从该文件中读取并将其存储在一个新文件中,并根据该文件上的内容,在终端。
所以有以下输出重定向:
1) 从标准输出到称为 oioioi.txt 的文件(用于 ls 命令)
2) 从 oioioi.txt 到 grep.txt(用于 grep 命令)
3) 从 grep.txt 返回到终端
这是我的代码:
我认为第三个是不正确的。但是我也不确定前两个。如果你们可以看看我的代码并告诉我哪里出错了,或者给我一个使用 dup 进行以下重定向的例子,我真的很感激
c - 使用管道时出错,exec.Second 命令不退出
该代码将命令作为输入并执行它。管道也被处理。问题是假设如果我输入 ls | grep x 作为命令。进程 grep 不退出,因此程序停止。有任何想法吗。
c - 为家庭作业制作外壳
好的,这是我的 shell 代码。当我运行它时,我输入 ls 并给出正确的输出。然后我输入 ls -l 然后再次输入 ls 并给出 ls: cannot access : No such file or directory 同样当我使用 cd 时, ls 不提供输出并且 pwd 说“忽略未使用的参数” ALso cat 不起作用。虽然 mkdir、ps 和 ls -l 有效。
fork - 模拟管道
我最近才了解管道,我想效仿“|” 贝壳提供的噱头。
在下面的代码中,父进程生成了 2 个子进程,之后它们进行管道处理并被 ls 和 grep 替换。当这种情况发生时,父进程会耐心等待。问题是子进程永远不会完成,尽管它们设法通过管道将一些数据发送到屏幕上。
还有其他关于 SO 管道的帖子,但我从未见过父进程启动 2 个子进程的设置。我只见过父母与一个孩子交流。
我的问题是:为什么子进程没有完成?叉管结构是健全的还是我做错了?
system - 使用 dup2 系统调用两次?
在下面的代码中
我有两个 dup2 电话。第一个将 o/p 从标准输出重定向到我的文件。这很好用。然后我想重定向它以再次回到 stoud 但第二个 dup2 没有更改它并且“我在 STDOUT 中!” 打印在文件中。我的代码有什么问题?
c - 使用 pipe/dup2 与 Python 子进程通信
我想使用 Python 为我的 C 程序实现用户界面。但是,我似乎无法进行沟通。这是我到目前为止所做的,test.c
:
并且interface.py
是:
运行这个,我希望它打印出来,
但相反,它只是挂在后面,
c++ - 如何执行并写入标准输入并将标准输出通过管道传输到套接字?
我正在为我的学校项目编写一个 http 服务器,并且我正在尝试执行一个 CGI 脚本。以下代码成功执行了cgi程序,程序的输出发送到浏览器,但是我发送POST数据的方式有问题。这是我所拥有的:
如果我正确理解 CGI,我只需要设置一个 HTTP_CONTENT_LENGTH 环境变量(我正在这样做)并将请求正文发送到标准输入。我是否使用管道、dup2 并编写正确的方法来做到这一点?
发布到我的测试 PHP 脚本时,$_POST 数组为空。当发布到我的测试 perl 脚本时,它根本不会发送任何响应或完成运行;我认为它正在等待更多的标准输入。如果我的管道和 dup2ing 没有明显问题,我将发布一些可编译的测试代码来说明问题。
谢谢!
c - 在 C 中,如何使用 dup2 将 STDOUT_FILENO 重定向到 /dev/null,然后稍后再重定向回其原始值?
我有一个正在处理的任务,但我很难完成它。这个想法是编写一个程序 if.c 来执行一个程序,如果成功则执行第二个程序。我应该抑制第一个程序的标准输出并取消第二个程序的标准输出。我在多个测试中收到错误消息。例如:“./if echo no then echo yes”返回“echo:write error: Bad file descriptor”。我试过在网上找到我做错了什么,但没有运气。
这是我的代码:
c - Redirecting stdout to socket
I am trying to redirect stdout to a socket. I do something like this:
After doing so all stdio
functions writing to the stdout fail. I have tried to reopen stdout this way:
But printf
and other functions still don't work.
EDIT:
I am affraid that I misunderstood the problem at the first place. After some more debugging I've figured out that this is a real issue:
Thanks.
c++ - dup2() 导致子进程提前终止
因此,我正在编写一个程序,该程序涉及创建 2 组管道,以便父进程可以写入子进程,而子进程可以立即返回......
我的子进程有以下代码:
当我运行我的程序时,我得到的只是子进程的输出,executing child
但没有test output
。但是,当我删除处理 dup2 调用的 if 语句时,我的输出确实包括test output
.
关于为什么 dup2 导致我的子进程无法完成终止的任何想法?
(顺便说一句,最初,我的两个 dup2 是在单独的 if 语句中完成的......当我将测试输出放在测试下面时dup2(fd1[READ_END],STDIN_FILENO) < 0
,它会输出,但当我把它放在另一个 dup2 条件测试下面时却没有,所以我确信这就是我的问题所在)
提前致谢