问题标签 [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 - 失败的 C 管道操作
我正在尝试实现一个简单的外壳。管道不起作用,因为第二个 execve(如果您想知道,我必须使用 execve,而不是 execvp),表示找不到该命令,或者它只是失败并退出。这是我的管道代码。
注意:1.我已经测试以确保 cmd[1].name 是正确的......这样它就是正确的目录。并且 cmd[1].argv 不是空的......实际上包含一些东西。我已经尝试了一切......但我无法弄清楚为什么它不起作用。
这是结果:
编辑!!!我刚刚意识到,出于某种原因,它永远不会进入案例 0。fork 不会失败..但它永远不会进入案例 0。为什么会这样?
非常感谢您的帮助!
c - Linux shell 上的 I/O 重定向
一直在做一个shell项目。我已经设置了 I/O 重定向,但我显然遗漏了一些东西,因为当使用如下行进行测试时:“ls -al > outfile”它会在我的桌面上创建 outfile,但将其留空并且程序返回以下错误:
这是我的代码:
比较器函数只是检查输入的命令参数是“<”、“>”还是“>>”,然后返回包含它的索引。
不确定我在这里缺少什么,但它会返回前面提到的错误。任何想法?
c - 最后打印的文本通常应该打印在顶部
我创建了这个函数来打印文件内容:
问题是,当我在已将标准输出复制到文件的程序中调用此函数时(本例中为 fichierSortie)
我懂了 :
但通常我应该得到
谢谢
c - 管道、叉子、dup2 和麻烦
我想通过两个管道执行 metasploit 来与之通信,但我在通信方面遇到了麻烦。当我运行我的程序时,我得到这个错误:“stty:标准输入:设备的不合适的 ioctl”并且我没有收到 metasploit 提示。
只需选择一个漏洞利用。
这是我的代码:
它显示了这一点:
c - 需要实现一个管道,dup2函数来执行“ls | tr az AZ > file.txt”
我有以下执行“ls | tr az AZ”的 C 代码,但我不知道如何使输出转到 file.txt。我需要三次创建另一个管道或叉子吗?由于我将输出保存到文件中,我是否需要使用 open() 函数?
c - 几乎完成了 linux shell 管道
嗨,我正在尝试在 linux 上构建一个 shell,但我坚持使用流水线部分。首先我从用户那里获取输入,比如“ls | sort”,然后当我尝试运行程序时,它看起来像命令 ls 和排序不起作用看起来我已经做对了所有事情,但它似乎仍然无法正常工作。你能帮忙吗?提前致谢
c - C Webvserver – STDIN、套接字和 CGI 管道
我想为GNUNet创建一个远程控制,所以我开始为 GNU OS 编写一个自制的多线程通用网络服务器,能够验证用户(从系统用户数据库读取)并能够执行通用 CGI 程序/脚本. 我从头开始,现在只是一个草稿。但是,一切似乎都运行良好。
我只有一个问题。
如您所知,CGI 程序/脚本从 STDIN 读取 POST 字符串并将其内容发送到 STDOUT。以下是我编写的代码(部分)。它似乎有效。
如您所见,在执行 CGI 程序之前,从客户端接收整个 POST 字符串并通过管道传输(首先是请求字符串中包含的截断部分——通常是几个字节——然后是其余部分)。然后,执行 CGI 程序。
现在我的问题...</p>
如果我尝试上传几个 MB 的文件,在调用 CGI之前会通过管道传输几个 MB:有没有办法将套接字直接重定向到新进程的 STDIN,以便之前不读取它?但是,可以肯定的是,我必须在之前发送 POST 字符串的读取截断部分。所以,我可以用这种方式来概括我想做的事情:
- 将字符串(几个字节)传输到 STDIN,然后
- 将套接字(客户端)重定向到 STDIN,然后
- 执行外部进程(CGI 程序)
可能吗?你能告诉我怎么做吗?
unix - 在 Python 中的 fork 调用后过早退出脚本(创建管道)
call(argv) 函数内的代码片段
上面的代码给出了一个只有两个命令的简单管道的结果,但它会导致 shell 过早退出。如何让此代码停止退出我的脚本并让它返回到命令提示符?
程序如何运作
孩子执行第二个命令。通过使用 dup2() 调用将输出沿管道重定向,其输出被发送到管道。这是通过使用值 sys.stdout 更改管道写入文件描述符来实现的。
然后,父级通过 dup2() 调用使用输入重定向。这会产生最终输出,然后在脚本退出后直接显示在屏幕上。
run 函数调用接受命令及其参数。它执行给定的命令。它还运行 globing 以及输入和输出重定向。
这可能很简单,但我似乎无法发现导致问题的原因......
c - 当我重定向输出时,fork 和等待过程不适用于 mke2fs
我需要分叉一个进程,在缓冲区中重定向输出(stdout 和 stderr)。我的代码似乎适用于大多数二进制文件,但不是全部。例如,我可以使用 ls -R /proc/ 之类的很长的“ls”来运行我的代码,并且它运行良好。当我运行 mke2fs 进程时,我的代码不再工作。
如果我在 fork 中运行 mke2fs 并等待它,它工作得很好。现在,如果我添加重定向的东西,我的程序永远不会完成运行。
我写了一点 main 来测试这个具体的麻烦:
如果我运行 ps,我可以看到我的子进程正在运行:
我无法理解为什么我会出现这种奇怪的行为。不确定它是否相关,但 mke2fs 的输出不是经典的。该过程似乎在计算期间更新输出,而不是打印输出并向前推进提示。它是一种进度条。不确定我的解释是否真的很清楚。
谢谢,伊娃。
c++ - 关于dup2和多线程的问题
我遇到了一个关于 dup2 和多线程的非常字符串的问题,代码是这样的:
我已经在一个单独的项目中测试了代码,我可以看到“hello”是从 std 输出的,但是一旦我把它放在一个大项目中,“hello”就是从 err 输出的:(
我正在使用 xcode5.0 并混合 c++ 和目标 c。有什么想法吗?谢谢