2011-07-25 9 views
6

私は実験の間にファイルシステムのメモリキャッシュをクリアするためのベンチマークツールをC++で書いています。私は、次のコンソールコマンドを認識してよ:LinuxシステムでC++でファイルシステムのメモリキャッシュをプログラムでクリアする方法は?

sync 
echo 3 > /proc/sys/vm/drop_caches 

私の質問は、私はC++の中にプログラムで直接これを行うことができますどのようにでしょうか?

ご協力いただきましてありがとうございます。トリックを行う必要があり、このような

答えて

11

ちょうどそれへの書き込みは:それは同期が含まれているため

sync(); 

std::ofstream ofs("/proc/sys/vm/drop_caches"); 
ofs << "3" << std::endl; 
12

何か:

int fd; 
char* data = "3"; 

sync(); 
fd = open("/proc/sys/vm/drop_caches", O_WRONLY); 
write(fd, data, sizeof(char)); 
close(fd); 
+1

これは良い答えです。 drop_cachesは* debugging *ツールであり、データを削除する前にディスク上のデータを常に取得するとは限らないため、これは重要です。 –

+0

もっと良い答えは何ですか?私が見る答えには、「同期」も含まれています。 –

+0

@James:私が編集されました。 – slaphappy

関連する問題