簡體   English   中英

將正在運行的程序的輸出管道輸入xargs

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM