网站大量收购闲置独家精品文档,联系QQ:2885784924

进程管理函数.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程管理函数

进程的终止 int on_exit(void (*function)(int,void *),void *arg); 作用与atexit类似,不同是其注册的函数具有参数,退出状态和参数arg都是传递给该函数使用。 void abort(void); 用来发送一个SIGABRT信号,该信号将使当前进程终止。 void assert( int expression ); 先计算表达式 expression ,如果其值为0,那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。常用来检测某些参数是否有不当情况出现,并在不当情况发生时以结束进程作为相应处理。 进程的终止 atexit实例 assert实例 system函数(选学) system函数是一个和操作系统紧密相关的函数。用户可以使用它在自己的程序中调用系统提供的各种命令。 system函数的说明如下: #include stdlib.h int system(const char *cmdstring); 参数cmdstring是一个字符串指针。 如果cmd是一个空指针,则仅仅当命令处理程序可用时,system返回非0值。 system函数(选学) 因为system在其实现中调用了fork,exec和waitpid,因此有三种返回值: 1)如果fork失败或者waitpid返回除EINTR之外的出错,则system返回-1,而且errno中设置了错误类型 2). 如果exec失败(表示不能执行shell),则其返回值如同shell执行了exit(127)一样。 3). 否则所有三个函数(fork,exec和waitpid)都执行成功,并且system的返回值是shell的终止状态,其格式已经在waitpid中说明。 system函数(选学) 如果一个进程正以特殊的权限(设置用户ID和设置组ID)运行,它又想生成另一个进程执行另一个程序,则它应当直接使用fork和exec,而且在fork之后,exec之前要更改回普通权限。设置用户ID和设置组ID程序绝不应调用system函数,因为特殊权限会在system中执行了fork和exec后扔保持下来。 system例子mainnew.c 一个简单的例子(生产者-消费者问题) int buffer[N]; int count = 0; int in = 0, out = 0; pthread_cond_t full = PTHREAD_COND_INITIALIZER; pthread_cond_t empty = PTHREAD_COND_INITIALIZER; pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; 一个简单的例子(生产者-消费者问题) void put(int o) { pthread_mutex_lock(lock); while (count == N) pthread_cond_wait(empty, lock); buffer[in] = o; in = (in + 1) % N; count++; pthread_mutex_unlock(lock); pthread_mutex_signal(full); } 一个简单的例子(生产者-消费者问题) int get() { pthread_mutex_lock(lock); while (count == 0) pthread_cond_wait(full, lock); int o = buffer[out]; out = (out + 1) % N; count--; pthread_mutex_unlock(lock); pthread_mutex_signal(empty); return o; } 操作系统上机指导——计算机与信息科学系软件工程教研室 进程 进程 进程控制的相关函数 进程的创建 派生进程:fork(),vfork(); 创建执行其他程序的进程:exec();(选学) Linux系统特有的调用:_ _clone(); (选学) 进程的等待 wait(),waitpid(); 进程的终止 exit(),atexit(),on_exit(),abort(),_exit(); 其他函数 system() (选学) ,getpid()。 进程的创建 fork()函数 #include sys/types.h #include unistd.h pid_t fork(void); fork在英文中是“分叉”

文档评论(0)

6952225 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档