How to programmatically clear the filesystem memory cache in C++ on a Linux system?

Viewed 8961

I'm writing a benchmark tool in C++ where I want to clear the filesystem memory cache between experiments. I'm aware of the following console commands:

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

My question is how can i do this programmatically directly within C++?

Any help is appreciated!

3 Answers

A slightly better way is to sync just the file systems which contains your descriptors using syncfs(). Or even better, simply use fsync().

int fd = open(...);   // Open your files
write(...);           // Your write calls
fsync(fd);            // Sync your file
close(fd);            // Close them

fsync() can fail if your descriptor is invalid. Look for errno if it returns -1.

Related