多线程多进程2

文章介绍了如何创建守护进程的七个步骤,包括创建子进程、设置会话、关闭文件描述符等。同时,讨论了无名管道和有名管道的概念,以及它们在进程间通信的应用。此外,提到了信号机制作为异步通知的功能,以及相关函数如atoi和signal的使用。
摘要由CSDN通过智能技术生成

守护进程

        后台进程----没有输入输出  /   无法转移前台

        周期性的在后台等待或执行某个任务

                制作守护进程的步骤:7大步

                        1>创建子进程,结束父进程

                                        ---->为了会话做准备>组长无法成为会话

                        2>设置当前子进程为一个会话/终端

                                        ---->为了摆脱原终端影响

                        3>创建子进程,结束父进程

                                        ---->彻底摆脱父子进程间的影响

                                        ------------守护进程雏形制作完毕

                        4>关闭所有文件描述符

                                        ---->为第7步做准备

                        5>改变执行目录

                                        ---->进程不影响目录的其他操作

                        6>修改权限掩码

                                        ---->进程创建文件不受权限影响

                        7>文件描述符重定向

                                        ---->彻底移除进程的0        1        2        功能

                                                                     printf   scanf   perror

     

无名管道

        仅用于父子/拥有血缘关系        进程间通信

        是利用文件描述符指定读写方向来进行通信的

        pipe        头文件:#include <unistd.h>

        int pipe(int pipefd[2]);功能:无名管道

        参数:pipefd[2]:        ---->文件描述符

                        [0]---->读

                        [1]---->写

        返回值:成功返回0        失败返回-1,并设置错误码

有名管道

        用于任意进程间通信

        是利用我们之前学习的p管道文件实现的

                1>创建管道

                2>双方打开管道后,在管道力进行读写操作

                3>最好不要放在共享文件夹下运行

        mkfifo        头文件:#include <sys/types.h>        <sys/stat.h>

        int  mkfifo(const char *pathname,mode_t  mode);        功能:创建有名管道

        参数:pathname:有名管道的名称        mode:创建有名管道的权限 0666

        返回值:成功返回0,失败返回-1,并设置错误码

        #include <unistd.h>
        int access(const char *pathname, int mode);
        功能: 
                判断文件状态 
                
        参数: 
                pathname:文件名称 
                mode:
                    F_OK:文件存在
                    R_OK:文件可读 
                    W_OK:文件可写
                    X_OK:文件可执行 
                    
        返回值: 
                成功返回0 
                失败返回-1,并设置错误码

信号

        异步通知         函数

        kill--->发送信号        头文件:#include <sys/types.h>        <signal.h>

        int kill(pid_t pid,int sig);        功能:发送信号

        参数:PID:给谁发        sig:信号

        返回值:成功返回0        失败返回-1,并设置错误码

        

        atoi        头文件:#include <stdlib.h>

        int atoi(const char *nptr);        功能:将字符串转化为整型

        参数:nptr:字符串

        返回值:成功返回整型        失败返回-1,并设置错误码

信号注册

        signal        头文件:#include <signal.h>

        typedef  void  (*sighandler_t)(int);

        sighandler_t  signal(int signum,sighandler_t handler)        功能:信号注册

        参数:signum:信号

                   handler:事件

                                SIG_IGN:忽略

                                SIG_DFL:默认

                                信号捕捉:执行某一个自己写的函数        void(*)(int)

        返回值:成功返回sighandler_t        失败返回SIG_ERR,并设置错误码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值