【Linux C/C++】 第05讲 父子进程

原创 2017年01月09日 08:48:06

    进程和线程是服务器编程的常客,真正理解清楚并不是一件容易的事,C/C++作为难学易用的代表,在服务器编程上表现的尤为明显,用之前需要理解这个东西的体系架构是怎样的,否则稍不注意就是一场灾难,然后末日来临。

    一、 什么是进程

             直观一点可以理解为一个 执行起来的程序

             所有进程属性采用结构体维护->树状结构体

                   ps 查看所有进程常见属性

                   top  查看系统进程执行状况

                   pstree 树形显示进程

                   kill 向进程发送信号

                       kill -s 信号 进程id

                       kill -l      显示进程能接收的所有信号

    二、创建进程

            进程有关的创建函数

               int system(const char* filename);

                  建立独立进程,拥有独立的代码空间,独立的内存空间

                  等待新的进程执行完毕,system才返回

               popen

               exec系列函数

               fork

                 pid_t fork();

                     创建进程


    三、理解进程

            1.父子进程的关系

                独立的两个进程

                pstree上面互为父子关系的两个进程节点

            2.问题:

               父进程先结束导致

                          -> 子进程就直接依托根进程init,成为孤儿进程,无任何危害

               子进程先结束导致

                          -> 子进程会成为僵尸进程,不占用内存,不占用CPU,但在进程树占用一个节点

                                造成进程名额的资源浪费,必须处理僵尸进程

            3.僵尸进程使用wait回收

            4.父进程如何知道子进程退出

                子进程结束通常会向父进程发送一个信号SIGCHLD(17)

            5.父进程处理子进程退出信号

                signal(int sig,void (*fun) (int));

                  向系统注册:只要sig信号发生,系统停止进程,并调用注册函数fun

                  当函数执行完毕,继续原来进程

            6.父子进程的资源访问

                6.1 内存资源

                   子进程克隆整个内存区域,但内存区域指向不同的物理空间

                   但内存独立,不能相互访问

                6.2 文件资源

                    两个进程之间,文件描述符指向的是同一个文件

            7. 多进程与文件锁

                 

    四、进程控制(后续更新...)

        

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C/C++ 日常学习总结(第二十三篇)父子进程间通信——环境变量

前面的共享内存也是

linux之父子进程的输出

首先,我们来回忆一下父进程与子进程,前几节讲了如何创建子进程,像这样的,pid_t id = fork(); 这样我们就创建好了一个子进程,然而fork()函数的返回值是什么呢?这里要记住:子进程返回...

神奇的linux:父子进程管道通讯

poll函数用法可以man一下。这里提供一个可以运行的示例。 程序流程: 父进程启动并创建子进程子进程通过管道发送数据给父进程父进程同时监听管道数据和shell输入,阻塞500毫秒发现没有数据就打...

Linux中fork的使用(05)---父子进程共享文件描述符

环境:Vmware Workstation;CentOS-6.4-x86_64 说明: 1、父进程和子进程可以共享打开的文件描述符。 2、父子进程共享文件描述符的条件:在fork之前打开文件...

Linux中父子进程Fork与malloc关系示例

#include #include #include #define SIZE 16 int main() { char *data; data=(char *)malloc(SIZ...

寻根1:unix/linux下的父子进程交互

寻根1:unix/linux下的父子进程交互

父子进程的双向通讯简明解读(c程序)。

两个进程之间通讯的方式你可以用system, popen,pipe 实现两个进程的通讯!1.如何利用一个现有的程序? 系统调用system()是个不错的选择,1.1system 调用的实现方式//下面...

linux下父子进程间的通信——管道

#include #include #include #include #include int main(void) { int result=-1; int fd[2],nbyt...
  • cghver
  • cghver
  • 2011-10-21 21:45
  • 2928

linux 父子进程联系

由于linux是一个多用户的操作系统,在同一时间可能会有多个用户争夺系统资源,进程为了及时,及早的完成任务(得到系统资源)就创建了子进程来争夺系统资源。一旦子进程用fork()创建成功,父子进程就会一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)