Java program as deamon

Hello,

I want to make my program as deamon:

I run the program, and it gives me again ready command line, but program runs in the background. Like in C on UNIX I can fork new process and close parent, this gives me console free, and runs program as deamon.

Is it possible on Java? If yes, then how?
besideAsked:
Who is Participating?
 
TimYatesCommented:
0
 
objectsCommented:
why can't you just run your app in the background?
0
 
johnchan2000Commented:
Try using javaw?
0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

 
sciuriwareCommented:
Just forking off or running& in UNIX is a bad idea: the process can accidentally be killed.
Use
        at now
or
        batch
in such a case.

In general a JAVA program can NOT fork, but spawn any process on any OS in the background.
;JOOP!
0
 
TimYatesCommented:
Or the service wrapper... which is the nicer, cross platform way of doing it... ;-)
0
 
objectsCommented:
> Just forking off or running& in UNIX

How does at and batch background the process?
0
 
sciuriwareCommented:
at and batch send the command to cron ......

Practice:
> batch
sleep 2000
Ctrl/D

And find a kind of batch file (=shell script) in /var/spool/cron/atjobs/...  (or such, I've not looked at it for 10 years).
See how it reflects your foreground.

;JOOP!
0
 
objectsCommented:
I realise that, but under the hood how are the process backgrounded?
0
 
sciuriwareCommented:
the cron daemon spawns the mentioned scripts.
They run under the effective user who submitted, but without terminal connection
and thus without vulnerability to signals from a keyboard session.
;JOOP!
0
 
besideAuthor Commented:
no one of answers gave me a straigth or moreover straigth way to solve the problem, I need to do deamon with my java code, not service wrapper, javaw exists only in windows sdk.
0
 
TimYatesCommented:
> I need to do deamon with my java code, not service wrapper

why not with service wrapper?

That's the only cross platform way of doing it...

On windows, you have javaw, on linux, you have  "nohup java MyClass &"

Javaw will stop when you log out, nohup on linux wont (if you leave off nohup, it will) ;-)

Tim
0
 
objectsCommented:
can you explain what the problem is with running the process in the background?
0
 
_kiewCommented:
You do need to use the service wrapper if you want to be able to stop your daemon cleanly, running the process in the backgtround will be of no help for that purpose.
TimYates' wrapper is just fine, you'll then just need two classes, one to start the daemon and another to stop it (can be the same with different arguments)
0
 
TimYatesCommented:
Why the C grade?  Seems a little bit harsh... :-(
0
 
TimYatesCommented:
Especially as you never explained WHY the service wrapper was not a valid answer...
0
 
besideAuthor Commented:
I explained, that I need not a wrapper, but JAVA code to start my program as a deamon. But your answer is accepted, because all other explains about running in background with & or javaw is not running as deamon.
0
 
TimYatesCommented:
>  I explained, that I need not a wrapper, but JAVA code to start my program as a deamon

As I explained, the only way to do this in a cross-platform way, is to use the Service Wrapper...  

So maybe the correct answer of "you can't" would have got me a higher grade? ;-)
0
 
TimYatesCommented:
Anyway...good luck with it...

Tim
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.