前面笔记中提到了无论子进程是 正常终止 还是 异常终止,父进程都可以通过 wait 函数或者waitpid 函数来获取到其 终止状态。但是 正常终止 和 异常终止 父进程所获得的信息是不同的,正常终止时父进程收到的是 子进程 中exit的参数,而异常终止 时父进程收到的是 导致子进程异常终止的 信号 ...
分类:
系统相关 时间:
2016-10-01 19:37:51
阅读次数:
212
system函数是用来在进程中执行 shell 命令的。注意其实 exec 族函数其实也可以用来在进程中执行 shell 命令,但是这两个函数实现执行 shell 命令的原理是完全不同的。 system函数相当于是 fork->exec->wait 这样的一个过程,也就是说system函数会调用fo ...
分类:
系统相关 时间:
2016-10-01 19:37:09
阅读次数:
241
当使用fork()创建了一个子进程后,通常接着会使用 exec 族函数指定新的程序来覆盖子进程的代码段、数据段、堆和栈。从而让子进程去执行一个新的程序,而不是执行父进程的副本。 exec 族函数中总共有 6 个函数: 上面 5 个函数属于库函数,这些函数都最终调用了下面的 execve 函数,这6个 ...
分类:
系统相关 时间:
2016-10-01 19:35:25
阅读次数:
299
我们在进程中获取到的通常都是用户ID,但是在某些特殊时候,比如 ls 命令显示文件信息的时候会显示文件的用户名,而不是用户ID。所以就涉及到用户ID和用户名之间如何相互转换的问题。 Linux提供了 getpwuid 和 getpwnam 两个函数来实现 用户ID 和 用户名之间的转换。 函数原型: ...
分类:
系统相关 时间:
2016-10-01 19:27:37
阅读次数:
320
在Linux系统中,每个进程都会属于一个进程组,而每个进程组都有一个进程组ID(pgid),这个进程组ID的值等于组长进程的进程ID。通常在shell下执行的第一个程序将成为一个组长进程,其后生成的所有与此进程有血缘关系的进程都属于此进程组(除非子进程使用setpgid函数改变自己的进程组ID)。 ...
分类:
系统相关 时间:
2016-10-01 19:20:14
阅读次数:
180
1.下载teamviewer,链接如下: 2.安装teamviewer,安装命令如下: sudo dpkg -i teamviewer_10.0.36281_i386.deb jello@jello-Inspiron-N4050:~/Downloads$ sudo dpkg -i teamviewe ...
分类:
系统相关 时间:
2016-10-01 19:19:56
阅读次数:
1210
在 APUE 第三版的第182页的实例提到了下面这段话: 这句话第一遍看都不知道什么意思,去网上找资料,看到一篇博客,帮助我理解了这句话的含义。这句话的意思可以做以下理解: 现在想要通过一个进程创建一个进程,然后让这两个进程各自独立地完成各自的任务(通常我们都是这样做的),如果现在只调用 fork( ...
分类:
系统相关 时间:
2016-10-01 19:17:12
阅读次数:
242
链接: https://pan.baidu.com/s/1skPxdNJ 密码: 7iwp 使用方法:安装完主程序后,将dmg包里charles.jar拖至/Applications/Charles.app/Contents/Java/里替换原来的charles.jar 然后打开程序,点击上面的菜单 ...
分类:
系统相关 时间:
2016-10-01 19:16:50
阅读次数:
238
工欲善其事,必先利其器。对于程序员来说,Eclipse便是其中的一个“器”。本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍。Eclipse快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分了你的神。而掌握了Eclipse的一些实用技巧,则可以大大提高开发效率。 1、丢掉鼠标吧之Eclip ...
分类:
系统相关 时间:
2016-10-01 19:09:24
阅读次数:
189
用户缓冲区: 由 fork函数创建的子进程会继承父进程的用户缓冲区。如果在父进程调用 fork 函数创建子进程之前缓冲区中仍然有数据在其中的话,那么子进程将会复制父进程的缓冲区。 文件共享: 由 fork 函数创建的子进程会继承父进程打开的所有文件描述符,而且父子进程相同的文件描述符是指向同一个文件 ...
分类:
系统相关 时间:
2016-10-01 17:19:25
阅读次数:
164
进程是对程序的动态描述,是操作系统进行资源分配的最小单位(线程是操作系统执行实体的最小单位)。 对于多道程序系统来说,其内存中可能存在着很多个进程,为了方便管理这些进程,操作系统内核为每个被创建的进程都建立一个结构体来保存与其相关的信息。这个结构体就是PCB,也就是进程控制块,进程控制块存在于进程的 ...
分类:
系统相关 时间:
2016-10-01 17:12:42
阅读次数:
360
进程的终止可以分为异常终止和正常终止。 当进程是正常终止的时候,子进程会通过 exit 函数向父进程传递终止状态; 当进程是异常终止的时候,内核(而不是进程)会传递给父进程一个信号编号值。 所以说无论子进程是正常终止还是异常终止,父进程都可以通过 wait 或者 waitpid 函数来获取到子进程的 ...
分类:
系统相关 时间:
2016-10-01 17:09:40
阅读次数:
196
Linux系统提供了 fork 函数用来创建子进程。fork 函数和普通的函数相比,其特殊的地方在于 fork 函数被调用一次,但是会返回两次。一次返回时在父进程中,另一次返回值是在子进程中。 函数原型: 返回值: 调用失败时返回 -1 给父进程,而且子进程也不会被创建。 调用成功时,在父进程中返回 ...
分类:
系统相关 时间:
2016-10-01 17:03:31
阅读次数:
155
启动代码除了会将命令行参数传递给 main 外,还会从内核中获取到一张环境表。该环境表是由全局变量 environ 来指向的。environ 的类型定义如下: extern char ** environ; /* 这个定义在 unistd.h 头文件中 */ 但是在实际测试当中,使用environ指 ...
分类:
系统相关 时间:
2016-10-01 17:06:07
阅读次数:
199
tr主要用于映射结果集、压缩和删除字符。我个人感觉特别有用,特别是压缩连续空格(空行)为一个空格(空行),让不规则的信息变得规则。 tr [options] [SET1] [SET2] 如果同时指定了SET1和SET2,则实现的是将SET1的符号按位置一一对应映射为SET2中的符号。实际上就是对应替 ...
分类:
系统相关 时间:
2016-10-01 17:03:39
阅读次数:
195
Linux操作系统中为了区分每一个进程,为每个进程分配一个唯一的进程号,也称为进程ID。进程 ID 是保存在进程的 PCB 中,属于进程的内核资源。 每个进程的进程 ID 虽然是唯一的,但是进程 ID 是可以重用的,当一个进程被终止时,其所有的资源将会被释放,也包括进程 ID。当系统再次创建一个新的 ...
分类:
系统相关 时间:
2016-10-01 16:58:46
阅读次数:
180
考虑下面两种情况: 第一种:父进程 先于 子进程 退出。 发生此种情况的时候,子进程便成为 孤儿进程。系统中的所有孤儿进程都会被 init 进程领养,init 进程的进程 ID 始终为 1。系统内当有进程终止的时候,内核会去检查所有的进程是否为该终止进程的子进程,如果是,则将其父进程 ID 修改为 ...
分类:
系统相关 时间:
2016-10-01 16:56:57
阅读次数:
158