//第一层系统调用asmlinkage long sys_exit(int error_code){ do_exit((error_code&0xff)pid)//空转进程也就是0号进程禁止退出 panic("Attempted to kill the idle task!"); if (tsk->... ...
分类:
系统相关 时间:
2016-10-27 12:14:10
阅读次数:
375
Linux提供了setuid函数和seteuid函数来更改与进程相关的用户ID,和进程相关的用户ID有“实际用户ID、有效用户ID和保存的设置用户ID” 函数原型: 函数参数: uid:要设置的用户ID 返回值: 调用成功时返回 0 调用失败时返回 -1 当进程的有效用户ID是root的时候,调用s ...
分类:
系统相关 时间:
2016-10-01 19:40:58
阅读次数:
481
前面笔记中提到了无论子进程是 正常终止 还是 异常终止,父进程都可以通过 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
在 APUE 第三版的第182页的实例提到了下面这段话: 这句话第一遍看都不知道什么意思,去网上找资料,看到一篇博客,帮助我理解了这句话的含义。这句话的意思可以做以下理解: 现在想要通过一个进程创建一个进程,然后让这两个进程各自独立地完成各自的任务(通常我们都是这样做的),如果现在只调用 fork( ...
分类:
系统相关 时间:
2016-10-01 19:17:12
阅读次数:
242
用户缓冲区: 由 fork函数创建的子进程会继承父进程的用户缓冲区。如果在父进程调用 fork 函数创建子进程之前缓冲区中仍然有数据在其中的话,那么子进程将会复制父进程的缓冲区。 文件共享: 由 fork 函数创建的子进程会继承父进程打开的所有文件描述符,而且父子进程相同的文件描述符是指向同一个文件 ...
分类:
系统相关 时间:
2016-10-01 17:19:25
阅读次数:
164
进程是对程序的动态描述,是操作系统进行资源分配的最小单位(线程是操作系统执行实体的最小单位)。 对于多道程序系统来说,其内存中可能存在着很多个进程,为了方便管理这些进程,操作系统内核为每个被创建的进程都建立一个结构体来保存与其相关的信息。这个结构体就是PCB,也就是进程控制块,进程控制块存在于进程的 ...
分类:
系统相关 时间:
2016-10-01 17:12:42
阅读次数:
360