[英]Piping Output from a Running Program into xargs
我有一个C程序,可以通过i2c连续读取加速度计数据。 每当平板电脑的方向发生变化时,它都会向stdout输出一个新行。
现在,我希望能够在bash脚本中使用该输出来更改屏幕的旋转。
现在,问题是:当我在bash中查看程序的输出时,程序逐行输出更改。 当我将输出重定向到文件时,输出会连续写入文件中,但是当我尝试管道输出时,没有任何事情发生。
这是C程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
int changed;
char *orientation;
while (1) {
/* Read data from i2c, check for change in orientation */
if (changed) {
fprintf(stdout, "%s\n", orientation);
fflush(stdout);
changed = 0;
}
}
exit(0);
}
这是我在bash的审判:
#!/bin/bash
# This does not work, xrandr is not called.
./i2c-rotation | xargs xrandr --orientation
# This is working
#./i2c-rotation > output
默认情况下, xargs
想要在运行命令之前读取大量参数。 在这种情况下,它可能不是你想要的。
xargs -L1
在每个完整的输入行之后运行命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.