我的程序中只使用了打开/读/写功能,但是oprofile告诉我:
20537 2.9883 tyn_indexer tyn_indexer nodes_term32_flush
11966 1.7411 vmlinux vmlinux jbd2_journal_commit_transaction
11733 1.7072 vmlinux vmlinux __strnlen_user
10741 1.5629 vmlinux vmlinux nobh_truncate_page
9728 1.4155 vmlinux vmlinux generic_file_buffered_write
9443 1.3740 vmlinux vmlinux mpage_da_map_and_submit
9023 1.3129 vmlinux vmlinux do_get_write_access
7283 1.0597 vmlinux vmlinux invalidate_interrupt31
5894 0.8576 vmlinux vmlinux write_cache_pages_da
5332 0.7758 vmlinux vmlinux journal_submit_commit_record
5316 0.7735 vmlinux vmlinux hugetlbfs_symlink
Run Code Online (Sandbox Code Playgroud)
generic_file_buffered_write如何出来,并且是开放/读/写函数缓冲?
这取决于缓冲的意思.当C程序员说这些函数是无缓冲的时,它意味着应用程序进程本地没有缓冲区可能阻止其他进程以一致的方式查看数据.这些函数的实现(在内核中)可以自由地执行尽可能多的缓冲,只要它以对应用程序进程透明的方式完成(即不会干扰它们是否或何时看到数据上的数据)文件).
另一方面,stdio(通常)是缓冲的,这意味着如果使用stdio(FILE *函数from stdio.h)来访问文件,可以从底层文件描述符中读取数据,并在进程的内存空间中缓冲,其他进程无法看到它在您真正打算阅读和使用它之前,或者您编写的数据可能会保留在进程的内存空间中,其他进程在您编写之后很久就看不到它(除非您调用fflush).
| 归档时间: |
|
| 查看次数: |
1773 次 |
| 最近记录: |