Currently the server runs in the foreground. In order to automate the start and management of a server, it's necessary to wrap it inside something like GNU screen.
A proper daemon implementation would:
1. Fork a process in the background and dissociate from the controlling TTY
2. Close any inherited file handles.
3. Write all data to log files, not to stdout/stderr.
4. Become the session leader / process group leader.
5. Write a PID file.
6. Change the CWD to / (so it doesn't keep any directory tied up when you need to unmount a file system)
7. Drop privileges after listening on required TCP ports.
8. Respond to SIGINT by gracefully shutting down.
9. Possibly implement other control mechanisms, for example:
a. Respond to SIGUSR1 by reloading configurations.
b. Listen on a local port for controlling commands (similar to commands typed into the console today)
Comments 2
Minecraft itself has no (and doesn't have to) mechanizms to deaemonize itself since it's running in a JVM.
Maybe Java has that, but it's up to you to fiddle out the parameters.
But in no case is this a bug. For feature suggestions or changes please see: Minecraft Suggestions on Reddit.
While I do not see this as a bug, it would be a useful feature for Linux boxes, (and I guess Mac OS and possibly BSD if you are running Minecraft on top of that). Windows would need a bit of a different approach.
That being said, many other game servers run in a similar fashion, where the server runs in the foreground (I'm looking at you SRCDS). This is something that would be more likely to be implemented first in a modded server, such as Forge or Bukkit.