当前位置:  技术问答>linux和unix

我写的SHELL为什么不能退出?

    来源: 互联网  发布时间:2015-11-04

    本文导语:  我在RedHat Linux 9的环境下写了个Shell,为了应付课程设计。但是我发现这个Shell无论用Ctrl+C或Ctrl+或者exit都退不出去,请各位高手帮我改一下,谢谢啦,本人分不多,50分好了。给第一个改完我能调通的人。def.h在机房...

我在RedHat Linux 9的环境下写了个Shell,为了应付课程设计。但是我发现这个Shell无论用Ctrl+C或Ctrl+或者exit都退不出去,请各位高手帮我改一下,谢谢啦,本人分不多,50分好了。给第一个改完我能调通的人。def.h在机房忘了带回来了。
代码如下:
//shell.c
#include "def.h"
parse(void)
{
    int i;

    /* 1 */
    command(0);

    /* 2 */
    if (check(""))
    {
        if (check(">"))
            append = TRUE;

        getname(outfile);
    }

    /* 5 */
    if (check("&"))
        backgnd = TRUE;

    /* 6 */
    if (check("n"))
        return(i);
    else
    {
        fprintf(stderr, "Command line syntax errorn");
        return(ERROR);
    }
}

initcold(void)
{
        signal(SIGINT, SIG_IGN);
        signal(SIGQUIT, SIG_IGN);
}


initwarm(void)
{
    int i;

    backgnd = FALSE;
    lineptr = line;
    avptr = avline;
    infile[0] = '';
    outfile[0] = '';
    append = FALSE;

    for (i = 0; iinfd!=0)
        {
            close(0);
            dup(ptr->infd);
        }

        if (ptr->outfd!=1)
        {
            close(1);
            dup(ptr->outfd);
        }

        /* 5 */
        if (backgnd==FALSE)
        {
            signal(SIGINT, SIG_DFL);
            signal(SIGQUIT, SIG_DFL);
        }

        /* 6 */
        for (i = 3; iav[0], ptr->av);
        exit(1);
    }
}

execute(int j)
{
    int i, fd, fds[2];

    /* 1 */
    if (infile[0]!='')
        cmdlin[0].infd = open(infile, O_RDONLY);

    /* 2 */
    if (outfile[0]!='')
        if (append==FALSE)
            cmdlin[j-1].outfd = open(outfile, O_WRONLY | O_CREAT
                                     | O_TRUNC, 0666);
        else
            cmdlin[j-1].outfd = open(outfile, O_WRONLY | O_CREAT
                                     | O_APPEND, 0666);

    /* 3 */
    if (backgnd==TRUE)
        signal(SIGCHLD, SIG_IGN);
    else
        signal(SIGCHLD, SIG_DFL);

    /* 4 */
    for (i = 0; i

    
 
 

您可能感兴趣的文章:

  • shell 函数中的用exit时,什么情况下仅仅退出函数,什么情况下退出整个shell程序?
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • shell退出,其相应的子进程,如何才能不死亡
  • 如何让shell脚本在用户(普通权限)退出后仍然执行
  • shell脚本运行5秒后自动退出的代码
  • 我在shell中su 到其它用户然后exit就退出shel
  • shell进程退出,其子进程怎样才能不死,交给init进程管,谢谢,请指点下我写的程序
  • 调用system函数执行更改MAC地址异常退出,上面的设置命令直接在shell终端中或在单独的shell脚本中能正常执行
  • cd、zip等命令在shell提示符下能执行,在shell脚本中为什么不能执行呢?
  • 能不能用gdb调试shell?
  • SHELL脚本文件不能执行问题?
  • 在底层驱动代码C中能不能嵌入shell脚本?
  • 请问在 redhat 8 kde 下面写 shell 文件怎么不能双击运行?
  • 如何让用户只能使用sftp而且不能执行其他shell命令
  • 急!如何从一个shell文件中传递一个参数到sql文件中,不能用存储过程
  • shell内能不能写入函数?
  • 以普通用户的身份登陆到unix,能不能调用shell执行特定的操作?
  • 在shell中为什么不能启动Httpd 服务
  • SHELL不能运行,大侠江湖救急!!
  • shell 不能直接运行?
  • shell变量用grep怎么不能赋值
  • 鼠标不能用的情况下,VMWARE里的redhat9怎么从X切换到shell
  • 大家来看这一句shell,如何不能生成指定的文本文件ip.txt?急!
  • Shell中ftp不能用mput
  • 自动 shell ftp 运动不能执行 问题
  • 急!请教高手:在Solaris系统中,对于远程telnet方式,发现只有root用户登录成功,其他用户不能登录,报no shell错误,是什么原因?
  • 能不能给个杀一堆进程的shell
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 数据库 iis7站长之家
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell
  • 在shell中的交互问题,现在需要在shell结束时按某键或任意键


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3