i2cを介して加速度計データを継続的に読み取るCプログラムがあります。タブレットの向きが変わるたびに、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