stdio

如何将 STDIO 从线程进程传输到 /dev/null?
stdio

如何将 STDIO 从线程进程传输到 /dev/null?

我正在尝试跑步Plarium 玩酒,但遇到了一个奇怪的问题。当尝试从常规桌面条目启动它时,我收到以下 JavaScript 错误: 如果我从终端启动,则不会发生这种情况。如果我尝试从桌面条目启动它,即使是一个管道到 /dev/null,在第一次登录后,没有先从终端启动 Plarium Play,我会收到两个 JavaScript 错误,一个接一个: 在这两种情况下,在消除它们之后,溅起的水花会永远挂起。 如果我首先从命令行启动 Plarium Play,然后使用修改后的桌面条目(使用指向 /dev/null 的 stdio 管道)进行后续启动,则不会发...

Admin

我可以在没有 ioctl 的情况下使用 KVM 吗?
stdio

我可以在没有 ioctl 的情况下使用 KVM 吗?

最近我发现似乎/dev/kvm没有实现read()or的功能write(),并且任何调用它们的尝试总是会导致错误 22(无效参数)。 我试图避免使用 ioctl 调用,并且想知道如果我要从内核中完全删除 ioctl 支持,是否可以使用 kvm。 在没有 ioctl 的情况下如何调用对 kvm 的访问? ...

Admin

哪些命令需要添加“stdbuf”前缀?
stdio

哪些命令需要添加“stdbuf”前缀?

当我有一个长时间运行的 Bash 命令管道时,由于 I/O 缓冲,我经常看不到任何生命迹象。我在网上发现可以使用 禁用缓冲stdbuf。显示的示例这里是: tail -f access.log | stdbuf -oL cut -d aq aq -f1 | uniq 但是,我不清楚管道中的哪些命令需要以命令为前缀stdbuf。因此我将它添加到每个命令中。如果没有缓冲,我可能会这样做: cd ~/tmp stdbuf -i0 -o0 -e0 find /i \! -type d | \ stdbuf -i0 -o0 -e0 sed -u -n -e \ 's...

Admin

C 中 Linux 特定 getline() 函数的意外行为
stdio

C 中 Linux 特定 getline() 函数的意外行为

#include <stdio.h> #include <stdlib.h> #define MAXLEN 1024 void reverse(FILE *, FILE *); int main(int argc, char ** argv) { ... reverse(fptr, stdout); ... return 0; } void reverse(FILE * instream, FILE * outstream) { char ** buf; char * lbuf; int count...

Admin

`stdio` 如何识别输出是重定向到终端还是磁盘文件?
stdio

`stdio` 如何识别输出是重定向到终端还是磁盘文件?

#include <stdio.h> #include <unistd.h> int main(void) { printf("If I had more time, \n"); write(STDOUT_FILENO, "I would have written you a shorter letter.\n", 43); return 0; } 我读到了 I/O 处理函数(stdio库函数)和系统调用执行缓冲操作以提高性能。该函数在用户空间printf(3)使用...

Admin

如何从外部操作系统(edk2 SMM 驱动程序)访问 kallsyms?
stdio

如何从外部操作系统(edk2 SMM 驱动程序)访问 kallsyms?

我正在用来EDK2编写系统管理模式(SMM)驱动程序。我认为它使用“纯 C”,因为我无法使用像stdio.即使我#include <stdio.h>使用undefined reference to "fopen"任何像fopen("/proc/kallsyms", "rb"). 根据我的理解,这个 SMM 驱动程序(顺便说一句,我正在里面编写代码PiSmmCore.c)不在操作系统之上运行,它运行在不同的层上(如果我错了,请纠正我)。因此,在这种情况下,如果我无法使用等fopen,fread我如何访问诸如 之类的文件/proc/kallsyms?...

Admin

*nix shell:如何禁用命令中所有管道的管道缓冲?
stdio

*nix shell:如何禁用命令中所有管道的管道缓冲?

我想每一个管道是无缓冲的,所以我不必stdbuf -oL为每个管道命令键入。当使用多个管道编写命令时,如果有一个环境变量或其他东西可以全局启用它或至少对于命令中的其余管道启用它,那就太好了。 是的,我知道unbuffer,stdbuf但需要为每个管道调用它们......我试图节省打字,因为我经常这样做。 就像是: 前: stdbuf -oL command_1 | stdbuf -oL command_2 | stdbuf -oL command_3 后: BUFFERING=-oL command_1 | command_2 | command_3 ...

Admin

意外的expect/ssh问题
stdio

意外的expect/ssh问题

我正在寻求自动化基于 ssh 密码的登录(以及登录后的一系列操作)。 我知道 ssh 密码提示会绕过 STDIN。为此,我编写了一个快速预期脚本。 spawn ssh -o StrictHostKeyChecking=No $USERNAME@$HOST expect { timeout { send_user "\nFailed to get password prompt\n"; exit 1 } eof { send_user "\nSSH failure for $HOST\n"; exit 1 } "*assword" } send...

Admin

用于调试和管道输出(日志记录、指标等)的附加文件描述符
stdio

用于调试和管道输出(日志记录、指标等)的附加文件描述符

对于 bash 脚本项目,我将人类可读的日志信息写入 stdout/stderr。此外,我想将格式化的指标写入第三个流,默认情况下该流将被丢弃,但可以重定向以进行管道处理。是否建议使用附加文件描述符来执行此操作? exec 3> /dev/null echo "This is stdout" echo "This is stderr" >&2 echo "This is fd3" >&3 我同意第三行在正常情况下不显示。但是,当在某个工具链中使用时,我想通过管道传输这些消息。简单的例子: $ bash example.sh...

Admin

fwrite/fread(3) 历史上是否在不同平台上提供了不同的“多个项目”行为?
stdio

fwrite/fread(3) 历史上是否在不同平台上提供了不同的“多个项目”行为?

和 对于可变数量的项目有一个额外的参数fread(3)。fwrite(3)因此,典型的写入通常有一个硬编码的计数,因为它只有一个以 char 开头的缓冲区,例如fwrite(data, len, 1, stdout)。 这个参数有什么意义呢?这是否总是只是一种方便的“让系统进行乘法”的事情calloc(3),或者某些历史操作系统和/或存储设备对写入的单个项目有特殊处理? 激发我好奇心的是我偶然发现了一些 IBM z/OS 文档他们的fwrite()它在“记录 I/O 输出”和“块 I/O 输出”之间进行了一些区分,并讨论了每个项目如何被截断超过一定长度 -...

Admin

如何读取服务器标准输出并仅在输出消息后继续
stdio

如何读取服务器标准输出并仅在输出消息后继续

假设我有一个简单的 Node.js 服务器,例如: const http = require('http'); const server = http.createServer((req,res) => res.end('foobar')) server.listen(3000, () => { console.log(JSON.stringify({"listening": 3000})); }); 然后使用 bash: #!/usr/bin/env bash node server.js | while read line...

Admin

将 stdout 和 stderr 附加到文件
stdio

将 stdout 和 stderr 附加到文件

我有这个: nohup_ntrs(){ nohup_file="$HOME/teros/nohup/stdio.log" mkdir -p "$(dirname "$nohup_file")"; echo " ------------- BEGIN $(date) -------------- " >> "$nohup_file" nohup "$@" &>> "$nohup_file" echo " ------------- END $(date) -------------- " >> ...

Admin

编写和执行程序以使其表现得像控制台
stdio

编写和执行程序以使其表现得像控制台

我编写了一组程序,旨在使用无线电发射器-接收器 (NRF24L01) 连接两个设备,就像它们通过串行接口连接一样。 目前,我能够向一个方向发送 bash 命令,比如说从设备 A 到 B。我的 A 设备当前是 AVR 微控制器。 我的 B 设备是 Rapberry Pi。我使用以下命令将收到的文本通过管道传输到 bash。这允许发送命令,但不允许将其输出发送回 A 设备。 ./program | bash 我不知道如何以不会阻塞和阻止程序对接收到的数据做出反应的方式将 bash 的输出传输回我的程序。如果可以在两个方向设置管道,我仍然不认为我可以使用...

Admin

终端上退格键的行为
stdio

终端上退格键的行为

这是关于退格 ( ) 字符的行为\b。我有以下 C 程序: int main() { printf("Hello\b\b"); sleep(5); printf("h\n"); return 0; } 我的终端上的输出是 Helho 光标前进到下一行的第一个位置。 首先,整个内容仅在 5 秒睡眠后打印,因此我推断从内核到终端的输出是行缓冲的。所以现在,我的问题是: 由于\b\b向后退了两个空格,到了 (第二个) 的位置,那么与被 替换的l方式类似,应该被 替换。为什么不是呢?lho\n 如果我删除该行prin...

Admin