26.1 system 函数 26.1.1 函数说明 system(执行shell 命令)相关函数 fork,execve,waitpid,popen #include <stdlib.h> int system(const char * string); 函数功能:简化 exec 函数 函数说明 system()会调用 fork() 产生子进程,由子进程来调用 /bin/sh -c string 来执行参数 string 字符串所代表的命令,此命令执行完后随即返回原调用的进程. 在调用 sy…
  在这篇随笔里面将对Linux系统的启动进行一个详细的解释!我的实验机器是CentOS6.4,当然对于现有的Linux发行版本,其系统的启动基本上都是一样的! 首先我们来看下Linux系统启动的几个步骤: 对于Linux系统来说,系统的整个启动过程就是分为这6个部分.下面将对每一个部分的启动时所完成的功能进行详细解释. 一.BIOS 对于BIOS我想大家应该都不陌生,只要是PC机,当电脑启动时第一个运行的就是BIOS.BIOS(Basic Input Output System)我们称之为基本…
kill 命令通常用来 “杀死”(终止)进程,它可以用来终止运行不正常的程序或者反过来拒绝终止的程序.kill 命令准确地说并不是 “杀死” 进程,而是给进程发送信号(signal). 和文件一样,进程也有所有者,只有进程的所有者(或超级用户)才能使用 kill 命令来向它发送信号. 命令格式 kill [-s signal|-p] [--] pid... kill -l [signal] 命令参数 -s signal 指定发送的信号. -l 打印信号的名称列表. 常用信号   信号编号    …
1.用途说明 trap是一个shell内建命令,它用来在脚本中指定信号如何处理.比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序.如果要在Ctrl+C不退出程序,那么就得使用trap命令来指定一下SIGINT的处理方式了.trap命令不仅仅处理Linux信号,还能对脚本退出(EXIT).调试(DEBUG).错误(ERR).返回(RETURN)等情况指定处理方式. 2.常用参数 trap [-lp] [[arg] sigs…
21.1 进程查看和进程状态 21.1.1 ps 指令 ps 指令通常可以查看到进程的 ID.进程的用户 ID.进程状态和进程的 Command ps:查看当前用户启动的进程 ps -ef:详细查看后台进程信息,可以用 ps -ef | more 进行分屏查看 ps -aux:当前运行的进程占用的CPU的时间,内存的时间 USER:进程的属组 PID:进程的ID PPID:父进程 %CPU:进程占用的CPU百分比 %MEM:占用内存的百分比 NI:进程的 NICE值,数值大,表示较少占用CPU的…
23.1 进程链和进程扇 23.1.1 概念 进程链:一个父进程构建出一个子进程,子进程再构建出子子进程,子子进程构建出子子子进程.... 这种就为进程链 进程扇:一个父进程构建出多个子进程,子进程都是由同一个父进程构建出来 23.1.2 进程链的构建 process_link.c /* 创建5个进程(包括父进程) */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int arg…
22.1 fork 和 vfork 函数 22.1.1 函数说明 #include <unistd.h> #include <sys/types.h> pid_t fork( void); 函数说明: 一个现有进程可以调用fork函数创建一个新进程. 由fork创建的新进程被称为子进程(child process). fork函数被调用一次但返回两次. 两次返回的唯一区别是子进程中返回 0 值而父进程中返回子进程 ID. 子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的…
1 前景回顾 1.1 Linux的调度器组成 2个调度器 可以用两种方法来激活调度 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测是否有必要 因此当前linux的调度程序由两个调度器组成:主调度器,周期性调度器(两者又统称为通用调度器(generic scheduler)或核心调度器(core scheduler)) 并且每个调度器包括两个内容:调度框架(其实质就是两个函数框架)及调度器类 6种调度策略 linux内核目前实现…
28.1 介绍 28.1.1 概念 自动接受终端信号的组称为前台进程组 在终端通过 ctrl + c 等动作产生的信号首先被前台进程组接受 在 shell 启动的若干个进程组默认是父进程所在的组为前台进程组 除非是默认,否则都要通过调度才能成为前台进程组 28.1.1 函数 tcgetpgrp 和 tcsetpgrp (1)tcgetpgrp 函数---获得前台进程组ID #include <unistd.h> int tcgetpgrp(int fd); 函数功能:获得前台进程组 ID 返回…
31.1 SIGCHLD 信号 子进程状态发生变化(子进程结束)产生该信号,父进程需要使用 wait 调用来等待子进程结束并回收它. 避免僵尸进程 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <sys/wait.h> #include <unistd.h> void sig_handler(int signo) { printf("child p…