首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
UNIX环境C语言进程通信
】的更多相关文章
UNIX环境C语言进程通信
一.信号管理 1.函数signal signal函数是UNIX系统信号机制最简单的接口 #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler ); /* signum:信号的编号 handler: 函数指针 接到此信号时要调用的程序 SIG_IGN 忽略signum信号 SIG_DFL 恢复信号默认的处理方式 返回值:信号设置之前信号…
UNIX环境C语言进程控制
一.进程ID 进程ID即是进程标识,每一个进程都会有一个唯一的非负整数来作为它的进程ID. ID为0的进程通常是调度进程,也可称为交换进程,该进程是内核的一部分,不执行硬盘上的程序,因此也被称为系统进程. ID为1的进程通常是init进程,init通常读取与系统有关的初始化文件,,并将系统引导到一个状态.init进程绝不会终止,它是一个普通的用户进程,但是它以超级用户特权运行,init会称为所以孤儿进程的父进程. 进程ID可以由以下函数获得 #include <unistd.h> pid_t…
UNIX环境高级编程——进程管理和通信(总结)
进程管理与通信 进程的管理 进程和程序的区别: 进程: 程序的一次执行过程 动态过程,进程的状态属性会发生变化 程序:存放在磁盘上的指令.数据的有序集合 是个文件,可直观看到 程序program 静态的概念,本身不会发生变化.指令谁来执行,数据谁来访问?cpu! 但前提是cpu能够接触到,程序执行过程需要cpu.内存.以及相关的资源. 进程是动态的,需要执行时才创建,运行结束要回收,包括创建.调度.执行.消亡的过程. 二者是关系:无程序进程就无意义,是内容与形式的关系. 一个程序的执行,至…
UNIX环境高级编程——进程基本概述
一.什么是进程 从用户的角度来看进程是程序的一次执行过程.从操作系统的核心来看,进程是操作系统分配的内存.CPU时间片等资源的基本单位.进程是资源分配的最小单位.每一个进程都有自己独立的地址空间与执行状态.像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构成了一个进程. 二.进程数据结构 进程的静态描述:由三部分组成:PCB.有关程序段和该程序段对其进行操作的数据结构集.进程控制块:用于描述进程情况及控制进程运行所需的全部信息.代码段:是进程中能被进程调度程序在CPU上…
UNIX环境高级编程——进程控制
一.进程标识符 ID为0的进程是调度进程,常常被称为交换进程.该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为系统进程.进程ID 1通常是init进程,在自举过程结束时由内核调用.init通常读与系统有关的初始化文件,并将系统引导到一个状态(例如多用户).init进程决不会终止.它是一个普通的用户进程,但是它以超级用户特权运行. pid_t getpid(void); 返回值:调用进程的进程ID pid_t getppid(void); 返回值:调用进程的父进程ID uid_t g…
UNIX环境高级编程——进程关系
一.终端的概念 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端.默认情况下(没有重定向),每个进程的标准输入.标准输出和标准错误输出都指向控制终端,进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准错误输出写也就是输出到显示器上.在控制终端输入一些特殊的控制键可…
UNIX环境高级编程——进程环境
一.main函数 C程序总是从main函数开始.当内核执行C程序时,在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址--这是由连接编译器设置的,而连接编译器则由C编译器调用(通常是cc).启动例程从内核取得命令行参数和环境变量值.然后调用main函数. 二.进程终止 有8种方式使进程终止,其中5种为正常终止,它们是: (1)从main返回 (2)调用exit (3)调用_exit或_Exit (4)最后一个线程从启动例如程返回 (5)最后一个线程调用pth…
Unix环境高级编程—进程关系
终端登录 网络登录 进程组 getpgrp(void) setpgid(pid_t pid, pid_) 会话: 是一个或多个进程组的集合,通常由shell的管道将几个进程编成一组. setsid(void) getsid(pid_t pid) 会话建立过程,简述: 其中,xinetd守护进程在监听到有客户端请求ssh连接后,fork一个子进程xinetd,然后该子进程exec执行sshd程序(也就图中的PPID为),而父进程xinetd则继续监听网络中其他连接请求的到来. sshd程序调用lo…
Unix环境高级编程—进程控制(二)
一.函数wait和waitpid 今天我们继续通过昨天那个死爹死儿子的故事来讲(便于记忆),现在看看wait和waitpid函数. #include<sys/wait.h> pid_t wait(int *statloc); pid_t waitpid(pid_t pid , int *statloc , int options); 若成功,返回进程ID,若出错,返回0或-1 wait系列函数的作用就是通知父亲儿子的死讯的,父进程一般接收到SIGCHLD信号而调用wait,(等待终止),可能…
高级UNIX环境编程7 进程
每个程序都会收到一张环境表 extern char **environ; c程序的存储空间布局: 正文段:共享,只读 初始化数据段:存函数以外的赋值 非初始化数据段(bbs):block started by symbol 在程序开始之前,内核将此段中数据初始化0或NULL,存储函数以外的声明 栈 堆:堆位于非初始化数据段和栈之间 c中,goto语句不能跨越函数的,执行这类跳转的是setjmp / longjmp getrlimit/setrlimit…