&表示后台,系统不等程序的结束,直接返回接受下一条命令。
用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。让命令提交后不受本地关闭终端窗口/网络断开连接的干扰,对于只是临时有一个命令需要长时间运行,可以使用 & 。
这里还有一个关于 subshell 的小技巧。我们知道,将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中,从而扩展出很多有趣的功能。
当我们将"&"也放入“()”内之后,我们就会发现所提交的作业并不在作业列表中,也就是说,是无法通过jobs来查看的。让我们来看看为什么这样就能躲过 HUP 信号的影响吧。
subshell 示例
[root@pvcent107 ~]# (ping www.ibm.com &)
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 16270 1 0 14:13 pts/4 00:00:00 ping www.ibm.com
root 16278 15362 0 14:13 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#
从上例中可以看出,新提交的进程的父 ID(PPID)为1(init 进程的 PID),并不是当前终端的进程 ID。因此并不属于当前终端的子进程,从而也就不会受到当前终端的 HUP 信号的影响了。
让程序在后台运行。
很多的shell脚本里面都有这个的
#include
int a[18]={57,71,87,97,99,101,103,113,114,115,128,129,131,137,147,156,163,186};
int tot=0,x,i;
void check(int k,int rest){
while(rest>=0){
if (k==18){
while (rest!=0) {tot++;}
;
}
for (i=0;i<=rest/a[k];i++)
check(k+1,rest-i*a[k]);
}
}
void main(){
scanf("%d",&x);
check(0,x);
printf("%d\n",tot);
}
让程序在后台处理
http://blog.sina.com.cn/taokeup