shell下,进程的前台与后台运行

来源:互联网 发布:ios模拟gps定位软件 编辑:程序博客网 时间:2024/05/03 10:18

 

跟系统任务相关的几个命令:fg、bg、jobs、&、ctrl+z
1. & 最经常被用到
   这个用在一个命令的最后,可以把这个命令放到后台执行
2. ctrl + z
     可以将一个正在前台执行的命令放到后台,并且暂停
3. jobs
     查看当前有多少在后台运行的命令
4. fg
     将后台中的命令调至前台继续运行 
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

5. bg 将一个在后台暂停的命令,变成继续执行

如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
1. jobs列举出后台作业信息。([作业号]   运行状态   作业名称)
2. ctrl+z 将任务放到后台去,并暂停;
3. bg  <%int> 将后台任务唤醒,在后台运行;
4. fg   <%int> 将后任务的程序放到前台;


1.  ctrl+z 将任务放到后台去,并暂停.
     主进程waitpid(pid,&status,WUNTRACED)时,子进程
     退出时,父进程被唤醒

2.  将后台任务唤醒,在后台运行;
     kill(pid,SIGCONT);  

3.  将后台运行的程序放到前台;
     kill(pid,SIGCONT);  
     waitpid(pid,&status,WUNTRACED); 
 

void fg(char *p)
{
    int pid=0;
    if(p!=NULL)
    {
        pid=atol(p);
        kill(pid,SIGSTOP);
        kill(pid,SIGCONT);
        waitpid(pid,NULL,NULL);
        pid_jobs[jobs_num--]=0;
    }
    else
    printf("error \n");
    return 0;
}    

void bg(char *p)  
{
    int pid=0;
    if(p!=NULL)
    {
    pid=atol(p)
    kill(pid,SIGCONT);
    pid_jobs[jobs_num--]=0;
    }
    else
    printf("error \n");
    return 0;
}    
//可见,后台运行与前台运行的区别只在于前台运行等待子进程的退出而阻塞父进程操作。而后台运行时,可以在父进程中输入命令继续其他操作。本质上没有区别,都是给子进程发送SIGCONT信号。

阅读(2849) | 评论(0) | 转发(0) |
0

上一篇:像树一样成长

下一篇:字符串切割思路--shell重定向 管道

相关热门文章
  • Eclipse中创建并运行Servlet项...
  • 自己用的ubuntu环境搭建(一)...
  • 博客再战百度1日收录-...
  • 月薪6千美元的谷歌实习生让我...
  • ubuntu sysklogd之配置文件介...
  • linux 常见服务端口
  • 什么是shell
  • linux socket的bug??
  • linux的线程是否受到了保护?...
  • 一个适用于windows和linux的抓...
  • debian7系统与ATI X2300显卡...
  • ubuntu sysklogd之配置文件介...
  • 自己用的ubuntu环境搭建(一)...
  • linux 学习心得
  • 用户输入操作和数据的显示...
给主人留下些什么吧!~~
原创粉丝点击