Tôi tò mò như thế nào printf
hoạt động bên trong Linux. Tôi không hiểu cách ghi dữ liệu vào STDOUT
.Printf hoạt động như thế nào?
Sau một chút tìm kiếm các internals, tôi đã tải về glibc
và đã xem xét mã nguồn:
__printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
done = vfprintf (stdout, format, arg);
va_end (arg);
return done;
}
Sau khi tìm thấy điều này, tôi đã đi sâu hơn vào vfprintf
chức năng - nhưng tập tin là khoảng 2500 các dòng mã C không quen thuộc. Tôi đang tìm một lời giải thích từ 10.000 feet về cách printf làm việc với bộ nhớ của máy tính và đầu ra để hiển thị các ký tự trên màn hình.
Nếu tôi là một đoạn mã lắp ráp, tôi sẽ phải làm gì để hoàn thành nhiệm vụ tương tự? Hệ điều hành có phụ thuộc không?
Tất cả đều viết xuống để viết vào một thiết bị (gần như thể đó là một tệp). Trình điều khiển thiết bị tiếp quản và diễn giải các giá trị ASCII và báo cho màn hình cách hiển thị chúng. Tương tự với đĩa, chuột, v.v. – Jiminion
không, anh ta cũng muốn hiểu vfprintf, chứ không chỉ viết bên dưới. Các chủ đề khác có chứa phần còn lại, mặc dù. –