一个写“stdout”的程序会写文件吗?屏幕?我不明白写stdout是什么意思。
oymdgrw71#
这意味着您正在会话的主输出设备上打印输出。不管是什么用户的控制台、tty会话、文件或其他什么东西。该设备可能是什么取决于程序如何运行以及从何处运行。以下命令将写入标准输出设备(stdout)。..
printf( "hello world\n" );
本质上,这只是另一种方式。..
fprintf( stdout, "hello world\n" );
在这种情况下,stdout是指向FILE流的指针,该流表示应用程序的默认输出设备。您还可以使用
stdout
FILE
fprintf( stderr, "that didn't go well\n" );
在这种情况下,您将把输出发送到应用程序的标准错误输出设备,该设备可能与stdout相同,也可能不同--与stdout一样,stderr是指向FILE流的指针,该流表示错误消息的默认输出设备。
stderr
rjee0c152#
看情况当您提交将输出发送到stdout时,您基本上是让用户来决定输出的位置。如果您使用printf(...)(或等效的fprintf(stdout, ...)),则会将输出发送到stdout,但实际上最终的位置取决于我如何调用您的程序。如果我像这样从控制台启动你的程序,我会在控制台上看到输出:
printf(...)
fprintf(stdout, ...)
$ prog Hello, World! # <-- output is here on my console
然而,我可能会像这样启动程序,在控制台上不产生输出:
$ prog > hello.txt
但我现在会有一个“你好”的文件txt”,并带有文本“Hello,World!“内部,这要归功于shell的重定向功能。谁知道呢-我甚至可能连接一些其他设备,输出可以到那里。关键是当你决定打印到stdout(e.例如,通过使用printf()),那么在看到进程是如何启动或使用的之前,您不会确切地知道它将去哪里。
printf()
oo7oh9g93#
stdout是UNIX中的标准输出流。Seewww.example. www.example.com .当在终端中运行时,您会看到在终端中写入到stdout的数据,您可以选择重定向。
3zwjbxry4#
stdout是标准输出文件流。显然,它的第一个和默认的输出指针是屏幕,但是你可以根据需要将它指向一个文件!请阅读:http://www.cplusplus.com/reference/cstdio/stdout/C++与C非常相似,但面向对象。
dauxcl2d5#
@K Scott Piel写了一个great answer here,但我想补充一点。请注意,stdout流是usually line-buffered,因此为了确保输出实际上被打印出来,而不是留在缓冲区中等待写入,您必须刷新缓冲区,方法是以\n结束printf语句例如:
\n
printf
printf("hello world\n");
或
printf("hello world"); printf("\n");
或者您必须在调用printf之后调用fflush(stdout);。例如:
fflush(stdout);
printf("hello world"); fflush(stdout);
阅读更多:Why does printf not flush after the call unless a newline is in the format string?
xjreopfe6#
stdout代表 * 标准输出流 *,它是一个由操作系统本身提供给程序的流。它从一开始就可以与stdin和stderr一起用于您的程序。他们所指的(或来自)可以是 * 任何 *。实际上,流只是为您的程序提供了一个对象,可用作发送或检索数据的接口。默认情况下,它通常是终端,但它可以重定向到任何你想要的地方:一个文件,一个管道,到另一个进程等等。
stdin
d4so4syb7#
stdout是shell的输出的术语(通常)。例如,如果读取stdout,则将读取shell在当前会话中输出的任何内容。
7条答案
按热度按时间oymdgrw71#
这意味着您正在会话的主输出设备上打印输出。不管是什么用户的控制台、tty会话、文件或其他什么东西。该设备可能是什么取决于程序如何运行以及从何处运行。
以下命令将写入标准输出设备(stdout)。..
本质上,这只是另一种方式。..
在这种情况下,
stdout
是指向FILE
流的指针,该流表示应用程序的默认输出设备。您还可以使用在这种情况下,您将把输出发送到应用程序的标准错误输出设备,该设备可能与
stdout
相同,也可能不同--与stdout
一样,stderr
是指向FILE
流的指针,该流表示错误消息的默认输出设备。rjee0c152#
看情况
当您提交将输出发送到
stdout
时,您基本上是让用户来决定输出的位置。如果您使用
printf(...)
(或等效的fprintf(stdout, ...)
),则会将输出发送到stdout
,但实际上最终的位置取决于我如何调用您的程序。如果我像这样从控制台启动你的程序,我会在控制台上看到输出:
然而,我可能会像这样启动程序,在控制台上不产生输出:
但我现在会有一个“你好”的文件txt”,并带有文本“Hello,World!“内部,这要归功于shell的重定向功能。
谁知道呢-我甚至可能连接一些其他设备,输出可以到那里。关键是当你决定打印到
stdout
(e.例如,通过使用printf()
),那么在看到进程是如何启动或使用的之前,您不会确切地知道它将去哪里。oo7oh9g93#
stdout
是UNIX中的标准输出流。Seewww.example. www.example.com .当在终端中运行时,您会看到在终端中写入到stdout
的数据,您可以选择重定向。3zwjbxry4#
stdout是标准输出文件流。显然,它的第一个和默认的输出指针是屏幕,但是你可以根据需要将它指向一个文件!
请阅读:
http://www.cplusplus.com/reference/cstdio/stdout/
C++与C非常相似,但面向对象。
dauxcl2d5#
@K Scott Piel写了一个great answer here,但我想补充一点。
请注意,
stdout
流是usually line-buffered,因此为了确保输出实际上被打印出来,而不是留在缓冲区中等待写入,您必须刷新缓冲区,方法是以\n
结束printf
语句例如:
或
或者您必须在调用
printf
之后调用fflush(stdout);
。例如:
阅读更多:Why does printf not flush after the call unless a newline is in the format string?
xjreopfe6#
stdout
代表 * 标准输出流 *,它是一个由操作系统本身提供给程序的流。它从一开始就可以与stdin
和stderr
一起用于您的程序。他们所指的(或来自)可以是 * 任何 *。实际上,流只是为您的程序提供了一个对象,可用作发送或检索数据的接口。默认情况下,它通常是终端,但它可以重定向到任何你想要的地方:一个文件,一个管道,到另一个进程等等。
d4so4syb7#
stdout
是shell的输出的术语(通常)。例如,如果读取stdout
,则将读取shell在当前会话中输出的任何内容。