Tag: 重定向

重定向到PORT

我正在使用iptables将连接到我的路由器的客户端重定向到另一个端口(比如8080) iptables -t nat -A PREROUTING -p tcp -j REDIRECT –to-port 8080 我正在运行执行二进制文件,将客户端重定向到一个网站。 说www.google.com。 我正在使用以下代码。 #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int listenfd = 0, connfd = 0; struct sockaddr_in serv_addr; char *reply = “HTTP/1.1 301 Moved Permanently\r\n” “Server: Apache/2.2.3/r/n” “Location: http://www.google.com\r\n” “Content-Length: 0\r\n” […]

通过管道重定向时捕获SetConsoleTextAttribute的效果?

我已经将使用CreateProcess生成的子进程的stdout重定向到管道。 它的工作正常,但据我所知,没有关于颜色变化的信息正在传递。 子进程正在使用SetConsoleTextAttribute来更改文本颜色 – 是否可以通过管道检测到这一点,如果是,如何检测? 我最终在RichEdit控件中显示输出,我想尽可能捕获颜色信息。 这是在C和XP和Vista上的Win32 API。

将标准输出/输入/错误重定向到文本框中或从文本框重定向

我正在制作一个可用于编辑,编译和运行C程序的VB.NET应用程序。 我使用了Process.StartInfo.RedirectStandardOutput属性。 但我无法将其重定向到文本框,因为它不是字符串类型。 如何将来自cl.exe进程的输出重定向到我的文本框?

Shell重定向与显式文件处理代码

我不是母语为英语的人,所以请原谅这个问题的尴尬标题。 我只是不知道如何更好地表达它。 我在一个FreeBSD盒子里,我有一个用C编写的小过滤工具,它通过stdin读取数据列表,并通过stdout输出一个处理过的列表。 我有点像这样调用它: find . -type f | myfilter > /tmp/processed.txt find . -type f | myfilter > /tmp/processed.txt find . -type f | myfilter > /tmp/processed.txt 。 现在我想给我的滤镜更多曝光并发布它。 公约说工具应该允许这样的东西: find . -type f | myfilter -f – -o /tmp/processed.text find . -type f | myfilter -f – -o /tmp/processed.text 这将迫使我编写简单不需要的代码,因为shell可以完成这项工作,因此我倾向于将其排除在外。 我的问题是:我是否会错过一些参数(除了惯例之外)为什么文件的读写应该在我的代码中完成而不是委托给shell重定向?

将stdout捕获到字符串并将其输出回C中的stdout

使用C语言。 我有一个写入stdout的函数。 我想捕获该输出,稍微修改它(替换一些字符串)。 然后再将它输出到标准输出。 所以我想从: char huge_string_buf[MASSIVE_SIZE]; freopen(“NUL”, “a”, stdout); -OR- freopen(“/dev/null”, “a”, stdout); setbuf(stdout, huge_string_buffer); /* modify huge_string_buffer */ 现在的问题是,如何将huge_string_buffer输出回原始标准输出?

使用重定向运算符后检索stdin <

对于编程任务,我们有以下要求: 它需要是一个用C编写的命令行程序。 它需要从文本文档中读取文本。 但是,我们要在运行程序时使用Unix重定向运算符<而不是让程序加载文件本身。 (因此程序通过假装从stdin读取来读取文本。) 在从文件中读取数据之后,程序将在完成其工作之前向用户轮询一些额外信息。 经过大量的研究,我无法找到一种方法来检索“旧的”stdin以完成第(3)部分。 有人知道这是甚至可能吗? 技术上,第(3)部分是奖励部分的一部分,教师可能没有实现自己(这是非常冗长的),所以这可能是不可能的,这是他的疏忽。 但是,我当然不想跳到这个结论。

将stdout和stderr重定向到同一文件并还原它

我将我的c程序的stderr和stdout的输出重定向到两个文件,然后恢复原始的stdout和stderr: int sout = dup(fileno(stdout)); freopen(“test.txt”,”w”,stdout); int serr = dup(fileno(stderr)); freopen(“test.txt”,”a”,stderr); //some output…. dup2(sout,fileno(stdout)); close(sout); dup2(serr,fileno(stderr)); close(serr); 这就是代码示例。 这很有效。 但是我想将stdout和stderr重定向到同一个文件(以后再恢复它),以便输出按照与不重定向stderr和stdout时在控制台输出上排序的顺序相同的顺序排序。 我怎样才能做到这一点?

制作Linux shell时流重定向和管道

我有一个在C中创建Linux shell的任务。目前,我仍然坚持实现重定向和管道。 我到目前为止的代码如下。 main()解析用户的输入。 如果内置命令,则执行该命令。 否则,标记化的输入传递给execute()(我知道我应该将内置命令拉入它们自己的函数中)。 execute()的作用是遍历数组。 如果遇到< , >或| 它应该采取适当的行动。 我试图正常工作的第一件事是管道。 不过,我肯定做错了,因为即使是一个烟斗也无法让它工作。 例如,输入/输出示例: /home/ad/Documents> ls -l | grep sh |: sh: No such file or directory | 我的想法是让每个方向和管道只适用于一个案例,然后通过使函数递归,我希望在同一命令行中使用多个重定向/管道。 例如,我可以执行program1 output1.txt或ls -l | grep sh > output2.txt ls -l | grep sh > output2.txt 。 我希望有人可以在试图管道时指出我的错误,并且可能提供一些关于如何处理用户输入多个重定向/管道的情况的指示。 #include #include #include #include #include int MAX_PATH_LENGTH = 1024; […]

在ST中将STDIN,STDOUT,STDERR重定向到/ dev / null

在Stevens的UNIX网络编程中,他提到重定向stdin,stdout和stderr,这在设置守护进程时是必需的。 他用以下C代码完成它 /* redirect stdin, stdout, and stderr to /dev/null */ open(“/dev/null”, O_RDONLY); open(“/dev/null”, O_RDWR); open(“/dev/null”, O_RDWR); 我很困惑这三个’知道’他们是如何重定向三个标准*。 特别是因为最后两个命令是相同的。 有人可以解释或指出我正确的方向吗?

如何在C中使用重定向进行文件输入

我需要从终端获取文件,我知道命令将如下所示: ./a.out < fileName.txt 我不知道如何在我的程序中使用fgets()来使用终端请求的文件。