Looks like this program is really old. It appears to be designed for a 32-bit system, the way it casts between unsigned int
and pointers.
unsigned int
is probably 32-bit even on your 64-bit system, so you're only printing half the pointer with the printf
, and only scanning half the pointer with the scanf
. The correct data type to be using for this is uintptr_t
, which is the same as uint32_t
on a 32-bit system, and the same as uint64_t
on a 64-bit system.
Try changing the type of addr
to uintptr_t
, and change lines 14-17 to this:
printf("Address of main function: %p\n", (void *) &main);
printf("Address of addr variable: %p\n", (void *) &addr);
printf("\nEnter a (hex) address: ");
scanf("%p", &addr);
You may have to include <stdint.h>
. These changes should make the code portable to any 32-bit or 64-bit architecture.
The easiest way to disable unnecessary services is to uninstall them with aptitude, or whichever package manager you like. Try terminating services one by one, and see if anything bad happens. If nothing bad happens, you can probably uninstall it. On the other hand, if the system does get wonky a reboot should fix it. Or, you can research the services by name and decide whether to uninstall them. (avahi-daemon for example is a good idea to uninstall.)
To make the GUI not run, uninstall your display manager (gdm, xdm, nodm, or whatever) and uninstall your xorg server or wayland server. There may be GUI programs remaining after that, but they will only be consuming disk space, not RAM or CPU.
If the battery is old and holds little charge, you may save a few watts by removing it and throwing it away, instead of letting the system keep it topped off.
Get a power meter, such as a Kill-a-watt device. Then, experiment with different settings. If it's consuming less than 30 watts, you're probably fine. If you live in the US, one watt-year is about one US dollar (or a little more), so for every watt it consumes, that's about how much you will pay per year for its electricity.