在mac osx上的shell脚本中设置stdout缓冲区的大小

时间:2012-12-17 10:51:56

标签: macos shell stdout instruments

我在mac上运行乐器,我想将输出重定向到文件。

以下是我正在使用的命令:

instruments -t "$AUTOMATION_TEMPLATE" "${APP_UNDER_TEST}" -e UIASCRIPT "AppTests/Automation/iPhone/MemLeaksTest.js" >> ${INSTRUMENTS_LOG_FILE}

现在,当我拖尾$ {INSTRUMENTS_LOG_FILE}时,我可以看到日志的最后一部分被延迟,直到模拟器上的应用程序关闭。 当仪器退出时,只有日志被放入日志文件中。

我想强制重定向的缓冲区大小为0,即立即登录文件。

我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

OSX是unbuffer还是stdbuf


以下是我的Linux系统上/ usr / bin / unbuffer的内容。

#!/bin/sh
# -*- tcl -*-
# The next line is executed by /bin/sh, but not tcl \
exec tclsh "$0" ${1+"$@"}

package require Expect


# -*- tcl -*-
# Description: unbuffer stdout of a program
# Author: Don Libes, NIST

if {[string compare [lindex $argv 0] "-p"] == 0} {
    # pipeline
    set stty_init "-echo"
    eval [list spawn -noecho] [lrange $argv 1 end]
    close_on_eof -i $user_spawn_id 0
    interact {
    eof {
        # flush remaining output from child
        expect -timeout 1 -re .+
        return
    }
    }
} else {
    set stty_init "-opost"
    set timeout -1
    eval [list spawn -noecho] $argv
    expect
    exit [lindex [wait] 3]
}