printf
이 리눅스 내부에서 어떻게 작동하는지 궁금합니다. 데이터를 STDOUT
에 쓰는 방법을 이해할 수 없습니다. 내부 검색을 조금 후 printf는 내부적으로 어떻게 작동합니까?
glibc
를 다운로드하여 소스 코드를보고했다 :이 찾은 후
__printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
done = vfprintf (stdout, format, arg);
va_end (arg);
return done;
}
, 나는 깊은 vfprintf
기능에 갔다 -하지만 파일은 약 2500 익숙하지 않은 C 코드 라인. printf가 컴퓨터의 메모리 및 출력과 함께 10,000 피트 거리에서 화면에 문자를 표시하는 방법에 대한 설명을 찾고 있습니다.
어셈블리 코드라면 동일한 작업을 수행하기 위해 무엇을해야합니까? 운영 체제에 종속적입니까?
모든 것이 장치에 쓰는 것만 큼 (마치 파일 인 것처럼). 장치 드라이버가 인계 받아 ASCII 값을 해석하고 모니터에이를 표시하는 방법을 알려줍니다. 디스크, 마우스 등등과 동일합니다. – Jiminion
아니요, 그는 기본 쓰기뿐만 아니라 vfprintf도 이해하고자합니다. 다른 스레드는 나머지를 포함합니다. –