1)質問を解決した後: awkコマンドを処理するときに「system()」呼び出しを「fork()+ execl()」に変換するにはどうすればよいですか?
2)メルポメネーの方法によると別の問題が発生します:
#define LOG_FILE_PATH "/tmp/logfile"
system("awk -v FS=\"[][]\" -v BEGINTIME=\"$BEGINTIME\" -v ENDTIME=\"$ENDTIME\" '$2>=BEGINTIME && $2<=ENDTIME' "LOG_FILE_PATH);
それはうまく機能し、私は欲しいものを手に入れます。
3)fork+execlバージョンに変換します。
sprintf(tmp1, "BEGINTIME=%s", getenv("BEGINTIME"));
sprintf(tmp2, "ENDTIME=%s", getenv("ENDTIME"));
sprintf(tmp3, "$2>=%s && $2<=%s", getenv("BEGINTIME"), getenv("ENDTIME"));
execl("/usr/bin/awk", "awk", "-v", "FS=\"[][]\"", "-v", tmp1, "-v", tmp2, tmp3, LOG_FILE_PATH, (char *)0);
何も出力しません、なぜですか?