Tôi đang cố gắng tìm hiểu chính xác cách sử dụng stat() để nắm bắt thông tin về một tệp. Những gì tôi cần là để có thể in một số lĩnh vực thông tin về một tập tin. Vì vậy ..Sử dụng Struct Stat()
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
using namespace std;
int main() {
struct stat buf;
stat("file",&buf);
...
cout << st_dev << endl;
cout << st_ino << endl;
cout << st_mode << endl;
cout << st_nlink << endl;
cout << st_uid << endl;
cout << st_gid << endl;
cout << st_rdev << endl;
cout << st_size << endl;
cout << st_blksize << endl;
cout << st_blocks << endl;
cout << st_atime << endl;
cout << st_mtime << endl;
cout << st_ctime << endl;
...
}
Tôi hoàn toàn nhầm lẫn về cách thực hiện việc này. Tại sao là & buf một tham số cho stat? Tôi không quan tâm đến việc lưu trữ thông tin này trong bộ nhớ, tôi chỉ cần các trường được xuất ra trong chương trình C++ của tôi. Làm cách nào để truy cập thông tin có trong cấu trúc? Là buf thực sự phải chứa thông tin trả về từ stat()?
Tôi hiểu, cảm ơn tất cả vì những câu trả lời. Họ khá hữu ích. Có ai biết làm thế nào bằng cách sử dụng stdin, stdout, hoặc stderr như các tham số để stat hoạt động? Đây là những luồng và không phải là các tệp sao cho stat có thể tạo một cấu trúc với dữ liệu? –
Sử dụng 'fstat', sẽ lấy một bộ mô tả tập tin làm đối số đầu tiên thay vì một đường dẫn. –
Thông thường tôi sẽ làm điều này nhưng môi trường có phần nhân tạo vì đây là phần hệ điều hành của một bộ mô phỏng kiến trúc mà tôi đã viết. Vì vậy, khi một tập tin được mở bởi một syscall, tôi có vector của riêng tôi để hoạt động như một bảng mô tả tập tin. Có cách nào tốt để nắm bắt các mô tả tập tin thực tế trên máy cho một tập tin khi nó được mở? Nếu đó là trường hợp tôi sẽ sử dụng fstat vì không có bản dịch nào được yêu cầu giữa thống kê luồng và số liệu thống kê tệp. –