Hiện nay, tôi đang sử dụng dòng lệnh shell các cuộc gọi từ chương trình fortran tôi sử dụng hệ thống phi tiêu chuẩn thông thường bên trong (tương tự như Fortran 2008 EXECUTE_COMMAND_LINE nội tại):Execute dòng lệnh và gửi lại lệnh đầu ra
CALL SYSTEM(commandStr)
nơi commandStr là một chuỗi ký tự chứa lệnh trình bao mà tôi muốn thực hiện. Tại thời điểm này, tôi không nhận thức được một cách trực tiếp để trả về đầu ra của commandStr, nhưng chỉ có trạng thái trả về của nó. Vì vậy, những gì tôi đang làm bây giờ là viết đầu ra vào một tập tin, và sau đó đọc các tập tin từ bên trong chương trình Fortran. Ví dụ:
CALL SYSTEM('sed ''s/,//g'' myFile > dummyFile')
nếu tôi muốn xóa dấu phẩy khỏi myFile. Sau đó tôi sử dụng OPEN và READ để lấy nội dung của dummyFile.
Điều này hoạt động tốt, tuy nhiên tôi lo ngại về việc viết/đọc tệp từ đĩa, đặc biệt nếu tôi đang thực hiện việc này trong vòng lặp dài và nếu đầu ra commandStr lớn. Có cách nào để tái trực tiếp đầu ra commandStr vào một bộ nhớ đệm (không phải đĩa cứng) mà tôi có thể truy cập trực tiếp từ chương trình Fortran của tôi (có thể thông qua một số UNIT cụ thể)?
Nếu đầu ra lớn, sẽ không có ý nghĩa hơn khi lưu trữ tệp đó? – Rook
Tôi đoán nó sẽ không tạo sự khác biệt cho mã - phần duy nhất tôi lo lắng ở đây là thường xuyên I/O đến và từ đĩa ảnh hưởng đến hiệu quả chương trình. Có lý do nào tốt hơn để lưu trữ nó vào tập tin, một cái gì đó mà tôi đang thiếu? – milancurcic
Vâng, theo quan điểm của tôi, đó chỉ là vấn đề thực tiễn. Nếu nó không phải là rất nhiều dữ liệu, lưu trữ nó vào một tập tin sẽ không thành vấn đề. Nó là rất nhiều dữ liệu, và tôi đang sử dụng lại nó trong chương trình đang chạy, nơi cuối cùng tôi muốn nó là bộ nhớ. Tôi cần bộ nhớ để lưu trữ các kết quả của "phân tích cú pháp" tập tin đó, và sau đó để làm một cái gì đó với những người. Điều này có lẽ đã được giải thích tốt hơn nhưng tôi nghĩ rằng bạn có được ý tưởng. – Rook