linux does not have the equivalent of nt services. you have cron jobs, or daemons. cron redirects stdin, stdout and stderr before it starts the job.
linux does not have a create process like nt. instead it has a fork() which creates an exact copy of the code running in memory. the return value of fork() tells the caller if it the parent or the child after the fork().
to start a process, your code does a fork(), then the child process reassigns files handles as desired and loads a new image. the new image inherits the open file handles.
to stop a program you send it a signal(9). the kill command can do this. typically ^c is converted to signal(9).
while you can code your program to auto detach, usually shell programs are used to start a process, they usually have a command to start a job in the background (typically & at end). they also have a command to list jobs, and attach to a job and kill a job
bash>my program&
bash>jobs
see the ^c, ^z, fg, bg, jobs commands for the shell of your choice.
for status, the program typically writes to a log file, and you use the tail command to get the current status.
so if your .net command tool is name foo, then
! start foo in background
foo > foo.log &! get status
tail foo.log! stop foo
pkill foo