2011-07-23 62 views
0

伊夫用C得到了我的计划,6个源文件,目的是将这些文件复制到任何其它Linux操作系统的计算机,和(可能编译,即时通讯新手,所以不知道这里需要什么)运行这个程序在后台。喜欢的东西:在后台运行的程序

[email protected]:~$ program 

程序在后台运行。要停止程序,请键入 XXX。

对此有何秘诀?

在此先感谢!

回答

0

将在你的C程序中调用daemon(0,0);

停止它是有点麻烦,我想只有一个运行该程序的副本。把程序的PID在一个文件,写其他实用程序(XXX)从文件中读取PID并杀死它。

重要:daemon叉,调用后台程序后,即可获取程序的PID。

但也许你太新,只想执行你的程序program&及其后kill它。

+0

是的,我太新手使用第一种方式,但我需要它不喜欢这样。您能否为我提供一些关于第一种解决方案的更多信息(更多细节,代码片断将是最好的)?非常感谢 – shaggy

0

我完全missunderstood问题。你需要shell脚本。

对于文件复制,您可以使用scp。在ssh上执行另一台主机上的命令。它应该是这样的(未测试):

pid=`ssh [email protected] "make >/dev/null 2>&1; nohup ./program; echo $!` 

以后你可以用

ssh [email protected] "kill $pid" 
+0

不,你没有。您首先发布的解决方案是OK。我有一个文件中的PID,并试图使用'kill()'并杀死进程,但我不知道应该发送什么信号。我尝试了0,没有工作,然后我尝试了一些'raise()'信号,但是也没有工作。我应该使用什么? – shaggy

+0

SIGTERM,如果这不起作用SIGKILL。 –

+0

我会在SIGTERM之前尝试SIGQUIT:它更有礼貌:) –

0

首先停止它,你应该调用fork()。

在家长,你应该退出,在子进程 - 你应该处理SIGHUP信号。

以这样的方式 - 你有守护进程。