我正在尝试加快我的 C 程序的速度,以便更快地输出数据。
目前我正在用来printf()向外界提供一些数据。它是连续的数据流,因此我无法使用 return(data)。
我如何使用write()或fwrite()将数据提供给console而不是文件?
总的来说,我的设置由用 C 编写的程序组成,其输出发送到 python 脚本,在其中进一步处理数据。我形成一个管道:
./program_in_c | script_in_python
Run Code Online (Sandbox Code Playgroud)
通过使用更多处理器核心,这为 Raspberry Pi 带来了额外的好处。
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
Run Code Online (Sandbox Code Playgroud)
write()从 buf 开始的缓冲区写入 count 个字节到文件描述符 fd 引用的文件。
标准输出文件描述符是:至少在linux中是1!在调用 write 系统调用之前,也要注意使用刷新 stdoutput 缓冲区,以确保清除所有以前的垃圾
fflush(stdout); // Will now print everything in the stdout buffer
write(1, buf, count);
Run Code Online (Sandbox Code Playgroud)
使用fwrite:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
Run Code Online (Sandbox Code Playgroud)
函数 fwrite() 将 nmemb 数据项(每个大小字节长)写入到 Stream 指向的流中,并从 ptr 给定的位置获取它们。
fflush(stdout);
int buf[8];
fwrite(buf, sizeof(int), sizeof(buf), stdout);
Run Code Online (Sandbox Code Playgroud)
请参阅以下链接中的手册页以进一步阅读:
| 归档时间: |
|
| 查看次数: |
16494 次 |
| 最近记录: |