スポンサーリンク

FreeBSDのcpコマンドのソースコードをみていると
8MB未満のファイルは、mmap(2)とwrite(2)を利用してファイルをコピー
します。
そうでない場合は、read(2)とwrite(2)を使ってファイルをコピーします。

/usr/src/bin/cp/utils.c

Mmap and write if less than 8M (the limit is so we don't totally
trash memory on big files. This is really a minor hack, but it
wins some CPU back.


int copy_file(const FTSENT *entp, int dne) からの抜粋

#ifdef VM_AND_BUFFER_CACHE_SYNCHRONIZED
if (S_ISREG(fs->st_mode) && fs->st_size > 0 &&
		fs->st_size <= 8 * 1048576) {
	if ((p = mmap(NULL, (size_t)fs->st_size,
		PROT_READ, MAP_SHARED, from_fd,
		(off_t)0)) == MAP_FAILED) {
...省略

FreeBSD関連バックナンバー
[2008-08-20-2] FreeBSDにpecl-memcacheをインストールする
[2008-08-20-1] FreeBSDにmemcachedをインストールする
[2008-08-19-1] FreeBSD ViewVCのインストール
[2008-08-18-1] FreeBSD Subversionをインストールする
[2008-07-10-2] FreeBSD 標準入力 stdinをtarする方法
[2008-07-10-1] tarの標準出力や標準入力を使いこなす方法
[2008-07-09-2] tarコマンドの使い方
[2008-07-02-1] socketプログラミング struct sockaddr_inのin_addrとは?

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー