qq_28927609 2015-11-03 12:54 采纳率: 33.3%
浏览 2145

关于Linux的三个编程题,想了半天毫无头绪,感觉Linux编程好复杂。求大家帮助帮助我,谢谢。

1:子进程每隔一秒向文件写入信息,父进程每隔三秒读出子进程所写的信息并输出到屏幕。
2:模拟shell,设计一个交互式命令处理程序,注意对命令参数和环境参数的处理。
3:编写一个守护进程,实现功能为:每隔一秒,向当前目录下的hello文件里写入一行helloworld。

  • 写回答

2条回答 默认 最新

  • lucia_fanchen 2015-11-04 12:04
    关注

    这是我写的守护进程

     #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<fcntl.h>
    #include<sys/types.h>
    #include<unistd.h>
    #include<sys/wait.h>
    
    //创建守护进程
    void init_daemon(){
        pid_t pid;
        int i;
        if(pid = fork()){
            //是父进程,结束父进程
            exit(0);
        }else if(pid < 0){
            //fork失败,退出
            perror("fork error");
            exit(-1);
        }else{
            //第一个子进程,后台继续执行
            setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
            if(pid = fork()){
                //是第一个子进程,结束
                exit(0);
            } else if(pid < 0){
                perror("fork");
                exit(-1);
            }else{
                //第二个子进程,继续,其不再是会话组长
                for(i = 0; i < getdtablesize();i++){
                    //关闭打开的文件描述符
                    close(i);
                }
                //重设文件创建掩码
                umask(0);
            }
        }
    }
    
    int main()
    {
        char *buf = "hello world\n";
        int fd;
        init_daemon();
        while(1){
            if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
                perror("open");
                exit(-1);
            }
            write(fd,buf,strlen(buf));
            close(fd);
            sleep(1);
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料