|
0
|
| IMTheNachoMan · 技术社区 · 6 年前 |
|
|
1
1
标准的Unix语义不允许这样做;它 不能 只使用构建在bash中或在posix中指定的工具就可以可靠地完成。
当写操作发生在同一个目的地时,它们之间只有一个相互保证的顺序。一旦您将stdout和stderr重定向到不同的目的地,
操作系统不再提供对其执行的写入顺序的保证。
;当这些写入操作指向单独的进程(例如
可以使用操作系统提供(或可用于)的系统调用级跟踪工具来生成系统调用的绝对顺序,从而生成确定顺序的输出;在对 Separately redirecting and recombining stderr/stdout without losing ordering . 然而,使用bash本身,您只能控制子进程的文件描述符连接在哪里,而不能控制写入这些描述符的内容是如何被缓冲和刷新的,因此没有足够的控制来使您所请求的内容成为可能,而不必对写入内容进行重新排序。 |