gpt4 book ai didi

io - 将未格式化(二进制数据)写入标准输出

转载 作者:行者123 更新时间:2023-12-02 20:09:30 25 4
gpt4 key购买 nike

我想在 Fortran 90 程序中将未格式化(二进制)数据写入 STDOUT。我使用的是 AIX Unix,不幸的是它不允许我将单元 6 打开为“未格式化”。我想我应该尝试在不同的单元号下打开 /dev/stdout ,但是 AIX 中不存在 /dev/stdout (尽管此方法在 Linux 下有效) .

基本上,我想将程序输出直接通过管道传输到另一个程序中,从而避免产生中间文件,有点像 gzip -c 那样。考虑到上面遇到的两个问题,还有其他方法可以实现这一点吗?

最佳答案

我会尝试通过TRANSFER()将数据转换为长字符并使用nonadvancing i/o打印它。问题在于处理器对记录长度的限制。如果太短,您最终会在某处出现意外的记录结束标志。此外,您的处理器可能不会按照您希望的方式写入不可打印的字符。

即类似

character(len=max_length) :: buffer

buffer = transfer(data,buffer)

write(*,'(a)',advance='no') trim(buffer)

我看到的最大问题是无法打印的字符。另请参阅A suprise with non-advancing I/O

---编辑--- 另一种可能性,尝试使用文件 /proc/self/fd/1/dev/fd/1

测试:

open(11,file='/proc/self/fd/1',access='stream',action='write')
write(11) 11
write(11) 1.1
close(11)
end

关于io - 将未格式化(二进制数据)写入标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13027067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com