> +static void drop_all_caches() > +{ > + int value = 3; > + int fd; > + > + if ((fd = open("/proc/sys/vm/drop_caches", O_WRONLY)) < 0) { > + fprintf(stderr, "Error opening drop caches: %d\n", errno); > + return; > + } > + > + write(fd, &value, sizeof(int)); > + close(fd); > +} fwiw drop_caches takes an ascii string, not a native int: open("/proc/sys/vm/drop_caches", O_WRONLY) = 3 write(3, "\3\0\0\0", 4) = -1 EINVAL (Invalid argument) --- test.c.busted 2013-04-22 15:22:57.593575545 -0700 +++ test.c 2013-04-22 15:29:25.358072087 -0700 @@ -7,7 +7,7 @@ static void drop_all_caches() { - int value = 3; + char value[] = "3\n"; int fd; if ((fd = open("/proc/sys/vm/drop_caches", O_WRONLY)) < 0) { @@ -15,7 +15,7 @@ return; } - write(fd, &value, sizeof(int)); + write(fd, value, sizeof(value) - 1); close(fd); } open("/proc/sys/vm/drop_caches", O_WRONLY) = 3 write(3, "3\n", 2) = 2 and all this makes me think that the write() return should probably have been checked :). - z _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs