0

まず、自分のやりたいことを探す方法がわからない。

ターミナル (Linux) で出力を生成する exec が 1 つあります。簡単な C プログラム a.out を見てみましょう:

#include <stdio.h>
int main (int argc, char *argv[]) {
int i=0;
float j=0;
for(i=0; i<=10000000;i++)
  {
    j = i*-1e-5;
    printf (" %d 2.0 %f 4.0 5.0\n",i,j);
  }
}

生成される出力は次のようになります。

 0 2.0 -0.000000 4.0 5.0
 1 2.0 -0.000010 4.0 5.0
 2 2.0 -0.000020 4.0 5.0
 3 2.0 -0.000030 4.0 5.0
 ...

この出力に応じて、次のことを行います。

  1. この exec を起動します
  2. 「キャプチャ」出力
  3. 3 列目の値が -0.5 に達した場合、exec を停止/強制終了します

どうやってこれをしますか?

たとえば、exec は次のスクリプト exec.sh では停止しません。

#/bin/sh
PROG=./a.out
$PROG > output  &
progpid=$!

(tail -fn 0 output & echo $! > tailpid ) | awk -v progpid=$progpid '{
    if($3<=-0.5){
      system("kill "progpid)
      # system( ##update other file )
      system("kill $(<tailpid)")
    }
 }'

何か案は ?

前もって感謝します

4

1 に答える 1