系统调用 01、什么是系统调用? 02、Linux系统调用之I/O操作(文件操作) 03、文件描述符的复制:dup(), dup2() 多进程实现多任务 04、进程的介绍 05、Linux可执行文件结构与进程结构 06、多进程实现多任务(一):fork() 07、多进程实现多任务(二):vfork( ...
分类:
系统相关 时间:
2018-02-06 11:04:31
阅读次数:
260
Linux 操作系统紧紧依赖进程创建来满足用户的需求。例如,只要用户输入一条命令,shell 进程就创建一个新进程,新进程运行 shell 的另一个拷贝并执行用户输入的命令。Linux 系统中通过 fork/vfork 系统调用来创建新进程。本文将介绍如何使用 fork/vfork 系统调用来创建新 ...
分类:
系统相关 时间:
2018-01-11 11:40:56
阅读次数:
195
一、宏观实现 以前介绍过fork()和clone()的区别,下面介绍一下两者在程序接口上的不同: 系统调用__clone()的主要用途是创建一个线程,这个线程可以是内核线程,也可以是用户线程。创建用户空间线程时,可以给定子线程用户空间堆栈的位置,还可以指定子进程运行的起点。同时,也可以用__clon ...
分类:
其他好文 时间:
2017-11-07 22:22:44
阅读次数:
186
如果一个进程fork了多个进程,这时使用GBD工具对程序进行调试会如何呢? 实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。 如果你事先在子进程代码里设定了断点,子进程会收到SIGTRAP ...
分类:
数据库 时间:
2017-11-05 18:32:51
阅读次数:
185
之前总结了Linux的系统创建,主要是fork()函数和vfork()函数,最近总结了Linux进程的终止,主要的调用是_exit()和exit(). 先看看两个函数的原型以及各自属于的头文件,可以发现这两个方法的区别 _exit()函数: 从_exit()的头文件能够发现,_exit()是属于Li ...
分类:
系统相关 时间:
2017-08-24 10:36:58
阅读次数:
293
转载 http://coolshell.cn/articles/12103.html 在知乎上,有个人问了这样的一个问题——为什么vfork的子进程里用return,整个程序会挂掉,而且exit()不会?并给出了如下的代码,下面的代码一运行就挂掉了,但如果把子进程的return改成exit(0)就没 ...
分类:
其他好文 时间:
2017-08-16 17:20:08
阅读次数:
157
fork 函数复制父进程(包括父进程的地址空间)产生子进程 在父进程返回子进程ID,在子进程本身返回0。 fork一般有两个用处: 1、网络服务进程等待请求,新请求到来,fork一个子进程处理,父进程继续监听。 2、子进程从fork返回立即调用exec执行其他程序,有的系统将fork之后立即执行ex ...
分类:
其他好文 时间:
2017-06-19 19:45:55
阅读次数:
197
1. 进程标识符 在前面进程描述一章节里已经介绍过进程的两个基本标识符pid和ppid,现在将详细介绍进程的其他标识符。 每个进程都有非负的整形表示唯一的进程ID。一个进程终止后,其进程ID就可以再次使用了。如下是一个典型进程的ID及其类型和功能。 进程名:swapper (交换进程),进程ID:0 ...
分类:
系统相关 时间:
2017-06-16 10:24:53
阅读次数:
336
为什么使用vfork()? 希望父子进程执行不同的代码。例如: 网络服务程序中,父进程等待客户端的服务请求,当请求达到时,父进程调用fork,使子进程处理该次请求,而父进程继续等待下一个服务请求到达。 vfork与fork的函数原型相同,用于创建新进程,而该新进程的目的是exec一个新程序(执行一个 ...
分类:
系统相关 时间:
2017-06-15 14:28:48
阅读次数:
243
翻译说明:这是一个日本人写的用户态下的函数tracer, 我们知道系统调用能够用strace, 库调用能够使用ltrace, 可是linux下居然没有一个比較有名的用户程序的tracer, 这真是比較奇怪。 这个工具好的地方就是用ptrace系统调用来实现。仅仅要跟踪的程序没有被strip,就能够使 ...
分类:
其他好文 时间:
2017-05-30 15:42:42
阅读次数:
378