[Android]Bionic C printf()流程

Bionic C printf()輸出的流程。 整體結構是寫到已打開的標準輸出的文件裏。 注意不一樣於Android Log() 。ionic

printf()-->vfprintf()-->__vfprintf()-->FLUSH()-->__sprint()-->__sfvwrite()ui

<!-- lang: cpp -->
int

printf(const char *fmt, ...) { int ret; va_list ap;code

va_start(ap, fmt);
ret = vfprintf(stdout, fmt, ap);
va_end(ap);
return (ret);

}it

int vfprintf(FILE *fp, const char *fmt0, __va_list ap) { int ret;io

FLOCKFILE(fp);
ret = __vfprintf(fp, fmt0, ap);
FUNLOCKFILE(fp);
return (ret);

}static

static int __sprint(FILE *fp, struct __suio *uio) { int err;di

if (uio->uio_resid == 0) {
	uio->uio_iovcnt = 0;
	return (0);
}
err = __sfvwrite(fp, uio);
uio->uio_resid = 0;
uio->uio_iovcnt = 0;
return (err);

}文件

Stdio.h: extern FILE __sF[];co

#define stdin (&__sF[0]) #define stdout (&__sF[1]) #define stderr (&__sF[2])return

相關文章
相關標籤/搜索