13 int main(int argc, char *argv[]) {
15 fputs("invocation: ./viewmem /proc/<pid>/mem <addr>\n", stderr);
20 unsigned long long addr = strtoull(argv[2], &end, 0);
21 if (errno != 0 || *end != 0) {
22 fputs("invalid addr\n", stderr);
25 int fd = open(argv[1], O_RDWR);
27 fprintf(stderr, "error: can't open %s - %s\n", argv[1], strerror(errno));
30 fprintf(stderr, "please press the any key...\n");
31 fd = openat(fd, "", 0, O_RDWR);
32 while (getchar() != '\n');
33 fprintf(stderr, "trying to dump...");
35 lseek(fd, addr, SEEK_SET);
37 fprintf(stderr, "lseek() failed: %s\n", strerror(errno));
40 char buf[4096]; // nothing interesting has a different pagesize anyway
42 while (read(fd, buf, 4096) == 4096) {
46 fprintf(stderr, "read %i pages\n", i);