相关疑难解决方法(0)

从C转发stdin和stdout

我想重开stdinstdout(也许stderr当我在它)的文件句柄,从而使未来的呼叫printf()putchar()还是puts()会去到一个文件,以及未来的呼叫getc()和这种将来自一个文件.

1)我不想永久丢失标准输入/输出/错误.我可能希望稍后在程序中重用它们.

2)我不想打开新的文件句柄,因为这些文件句柄必须要么传递很多,要么全局传递(不寒而栗).

3)如果我无法帮助,我不想使用任何open()fork()其他系统相关的功能.

所以基本上,这样做是否有效:

stdin = fopen("newin", "r");
Run Code Online (Sandbox Code Playgroud)

而且,如果确实如此,我怎样才能得到原来的价值stdin?我是否必须将其存放在一个FILE *以后才能将其取回?

c redirect stdio

62
推荐指数
5
解决办法
12万
查看次数

LINUX C中stdout和STDOUT_FILENO之间的区别

我想知道的区别stdout,并STDOUT_FILENO在Linux中C.

经过一番搜索工作,我得出以下结论.你能帮我复习并纠正错误吗?谢谢

  • stdout属于C语言的标准I/O流; 其类型为FILE*并在stdio.h中定义

  • STDOUT_FILENO拥有int类型,定义于unistd.h.它是LINUX系统的文件描述符.在unistd.h,它的解释如下:

The following symbolic constants shall be defined for file streams:

STDERR_FILENO
    File number of stderr; 2.
STDIN_FILENO
    File number of stdin; 0.
STDOUT_FILENO
    File number of stdout; 1.
Run Code Online (Sandbox Code Playgroud)

因此,在我看来,STDOUT_FILENO属于系统级调用,并且在某种程度上,就像系统API一样.STDOUT_FILENO可用于描述系统中的任何设备.

stdout较高的水平(用户级?)定位和实际封装的细节STDOUT_FILENO.stdout有I/O缓冲区.

这是我对他们差异的理解.任何评论或更正都表示赞赏,谢谢.

c linux stdout

57
推荐指数
1
解决办法
7万
查看次数

确定是否在C/C++中重定向过程输出

我正在为Linux编写命令行实用程序.如果输出(stdout)转到shell,那么打印一些转义来着色输出会很不错.但是如果输出被重定向,则不应该打印那些bash转义,或者内容可能会破坏依赖于该输出的解析器.

有几个程序执行此操作(吮吸ack),但我发现的是用Perl编写的,我无法找到他们是如何做到的.

我想用C/C++来编写我的实用程序.

c shell stdout

11
推荐指数
3
解决办法
3653
查看次数

标签 统计

c ×3

stdout ×2

linux ×1

redirect ×1

shell ×1

stdio ×1