C语言进程间通信.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信号处理函数 #includesignal.h int kill(pid_t pid, int sig); 功能:发送信号到进程。 返回值:成功返回0,否则返回-1。 #includeunistd.h int alarm(unsigned int seconds); 功能: 在secends秒后发送SIGALARM信号。若secends为0,则取消已设置闹铃。 返回值:成功返回上一个闹铃还剩余多长时间,失败返回-1。 第六十二页,共七十二页。 同时一个进程还可以选择如何处理信号 建立信号与进程之间的对应关系——信号处理 简单的signal函数 使用信号集函数组 signal() 只需把要处理的信号和处理函数列出即可 主要用于前32种非实时信号的处理,不支持信号传递信息 信号集函数组 涉及一系列的函数,这些函数按照调用的先后次序分为以下几大功能模块 创建信号集合:创建用户感兴趣的信号 登记信号处理器:主要用于决定进程如何处理信号 检测信号:信号处理的后续步骤 第六十三页,共七十二页。 信号处理函数 #includesignal.h sighandler_t signal(int sig, sighandler_t handler); 功能:信号处理函数。 返回值:成功返回可用信号处理函数,失败返回SIG_ERR。 参数: sig,要捕获的信号。 handler,信号处理函数。还可以是以下取值: SIG_IGN 屏蔽该信号 SIG_DFL 恢复默认行为 注:该函数简单但可靠性低,可由sigaction()代替。 第六十四页,共七十二页。 培训大纲 程序、进程和线程的概念 进程产生的方式 进程间通信和同步 Linux下的线程 第六十五页,共七十二页。 线程概述 进程是系统中程序执行和资源分配的单位。每个进程都拥有自己的数据段、代码段和堆栈段,故进程在进行切换等操作时需要进行大量上下文的切换工作 为进一步减少处理器的空转时间支持多处理器和减少上下文切换开销,进程演化出另一个概念——线程 进程内的基本调度单位,也可称为轻量级进程 线程是在共享内存空间中并发的多道执行路径,共享一个进程的资源,如文件描述和信号处理 大大减少上下文切换的开销 一个进程可以有多个线程,既有多个线程控制表及堆栈寄存器,但却共享一个用户地址空间 第六十六页,共七十二页。 线程基本操作 线程的创建和退出 函数说明:创建线程实际上就是确定调用该线程函数的入口点,通常使用pthread_create 线程创建之后,开始运行相关的线程函数,该函数运行完之后,线程也就退出。另一种退出线程的方法是使用函数pthread_exit,这是线程的主动行为 在使用线程函数时,不能随意使用exit退出函数进行出错处理。由于exit的作用是使调用进程终止,往往一个进程包含多个线程,故在使用exit之后,该进程中的所有线程都终止 由于一个进程中的多个线程是共享数据段,因此通常在线程退出后,退出线程所占用的资源并不会随着线程的终止而得到释放。 在线程中使用pthread_join函数,用于将当前线程挂起,等待线程的结束。此函数是一个线程阻塞函数,调用它的函数将一直等待到被等待的线程结束为止。函数返回,被等待线程的资源就收回 第六十七页,共七十二页。 函数格式 所需头文件 #include pthread.h 函数原型 Int pthread_create((pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)) 函数传入值 Thread:线程标识符 Attr:线程属性设置 Start_routine:线程函数的起始地址 Arg:传递给start_routine的参数 函数返回值 成功:0 出错:-1 所需头文件 #include pthread.h 函数原型 Void pthread_exit(void *retval) 函数传入值 Retval:pthread_exit调用者线程的返回值,可有其他函数如pthread_join来检索获取 第六十八页,共七十二页。 函数格式 所需头文件 #include pthread.h 函数原型 Int pthread_join((pthread_t th, void **thread_return)) 函数传入值 Th:等待线程的标识符 Thread_return:用户定义的指针,用来存储被等待线程的返回值(不为NULL时) 函数返回值 成功:0 出错:-1 第六十九页,共七十二页。 IPC结构 使用get方得到一个IPC结构体 如果key是IPC_PRIVA

文档评论(0)

虾虾教育 + 关注
官方认证
文档贡献者

有问题请私信!谢谢啦 资料均为网络收集与整理,收费仅为整理费用,如有侵权,请私信,立马删除

版权声明书
用户编号:8012026075000021
认证主体重庆皮皮猪科技有限公司
IP属地重庆
统一社会信用代码/组织机构代码
91500113MA61PRPQ02

1亿VIP精品文档

相关文档