当前位置: 技术问答>linux和unix
请教高手: 如何实现如此的程序启动?
来源: 互联网 发布时间:2015-01-06
本文导语: 请问,如何实现类似ORACLE或者iplanet启动的功能, 只在命令行敲个启动命令,程序就在后台运行了. 而输入命令的unix的terminal也可以关掉了. 甚至显示器也可以关掉. 请问如何是自己的程序实现这样的功能. 多谢!!! | ...
请问,如何实现类似ORACLE或者iplanet启动的功能,
只在命令行敲个启动命令,程序就在后台运行了.
而输入命令的unix的terminal也可以关掉了.
甚至显示器也可以关掉.
请问如何是自己的程序实现这样的功能.
多谢!!!
只在命令行敲个启动命令,程序就在后台运行了.
而输入命令的unix的terminal也可以关掉了.
甚至显示器也可以关掉.
请问如何是自己的程序实现这样的功能.
多谢!!!
|
example$ nohup your_command &
此时,而输入命令的unix的terminal也可以关掉了。your_command 会在后台运行。
此时,而输入命令的unix的terminal也可以关掉了。your_command 会在后台运行。
|
关于你的第一个问题,是守护进程的问题,答案如下:
/*******************************************************************
* 函数:initDaemon()
* 功能:在此所做的操作使得该进程成为(DAEMON)守护进程
* 由于该进程是作为一个SHELL命令在命令行启动的,父进程中止时,
* SHELL认为该命令已经结束;这样子进程自动成为后台进程。
* 编写:mengge
*******************************************************************/
int initDaemon( int argc, char* argv[] )
{
#if defined( DAEMON )
if( fork() != 0 )
exit( 0 );/* fork一个子进程并中止父进程 */
setsid( );/* 创建新进程组,调用进程成为进程组的首进程 */
signal(SIGHUP,SIG_IGN);
/* 忽略SIGHUP信号重新fork,进程不再是首进程 */
if( fork() != 0 )/* 中止第一子进程 */
exit( 0 );/* 第二子进程 */
return 0;
#else
return 0;
#endif
}
/*******************************************************************
* 函数:initDaemon()
* 功能:在此所做的操作使得该进程成为(DAEMON)守护进程
* 由于该进程是作为一个SHELL命令在命令行启动的,父进程中止时,
* SHELL认为该命令已经结束;这样子进程自动成为后台进程。
* 编写:mengge
*******************************************************************/
int initDaemon( int argc, char* argv[] )
{
#if defined( DAEMON )
if( fork() != 0 )
exit( 0 );/* fork一个子进程并中止父进程 */
setsid( );/* 创建新进程组,调用进程成为进程组的首进程 */
signal(SIGHUP,SIG_IGN);
/* 忽略SIGHUP信号重新fork,进程不再是首进程 */
if( fork() != 0 )/* 中止第一子进程 */
exit( 0 );/* 第二子进程 */
return 0;
#else
return 0;
#endif
}
|
bugfree(八个飞飞)的回答完全正确。
nohup表示进程脱离主控终端,就是终端退出进程也不退出。
&表示进程在后台运行。
nohup表示进程脱离主控终端,就是终端退出进程也不退出。
&表示进程在后台运行。