加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

linux基础复习(8)进程通信

发布时间:2022-10-24 15:12:00 所属栏目:Unix 来源:
导读:  数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。

  共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。

  通知事

 
  n pid>0 将信号发送给进程ID为pid的进程。
 
  n pid == 0 将信号发送给其进程组I D等于发送进程的进程组ID,而且发送进程有许可权向其发送信号的所有进程。
 
  n pid 将信号发送给其进程组ID等于pid绝对值,而且发送进程有许可权向其发送信号的所有进程。如上所述一样,“所有进程”并不包括系统进程集中的进程。
 
  n pid ==-1 POSIX.1未定义此种情况。
 
  #i nclude
 
  #i nclude
 
  #i nclude
 
  #i nclude
 
  #i nclude
 
  int main()
 
  {
 
  pid_t pid;
 
  int ret;
 
  if((pid=fork())0){
 
  perror("fork");
 
  exit(1);
 
  }
 
  if(pid == 0){
 
  raise(SIGSTOP);
 
  exit(0);
 
  }
 
  else{
 
  printf("pid=%d\n",pid);
 
  if((waitpid(pid,NULL,WNOHANG))==0){
 
  if((ret=kill(pid,SIGKILL))==0)
 
  printf("kill %d\n",pid);
 
  else{
 
  perror("kill");
 
  }
 
  }
 
  }
 
  }
 
  使用alarm函数可以设置一个时间值(闹钟时间),在将来的某个时刻该时间值会被超过。当所设置的时间值被超过后,产生SIGALRM信号。如果不忽略或不捕捉此信号,则其默认动作是终止该进程。
 
  #i nclude
 
  unsigned int alarm(unsigned int seconds) ;
 
  返回:0或以前设置的闹钟时间的余留秒数
 
  参数seconds的值是秒数,经过了指定的seconds秒后会产生信号SIGALRM。
 
  每个进程只能有一个闹钟时间。如果在调用alarm时,以前已为该进程设置过闹钟时间,而且它还没有超时,则该闹钟时间的余留值作为本次alarm函数调用的值返回。以前登记的闹钟时间则被新值代换。
 
  如果有以前登记的尚未超过的闹钟时间,而且seconds值是0,则取消以前的闹钟时间,其余留值仍作为函数的返回值。
 
  pause函数使调用进程挂起直至捕捉到一个信号。
 
  #i nclude
 
  int pause(void);
 
  返回:-1,errno设置为EINTR
 
  只有执行了一个信号处理程序并从其返回时,pause才返回。
 
  #i nclude
 
  #i nclude
 
  #i nclude
 
  int main()
 
  {
 
  int ret;
 
  ret=alarm(5);
 
  pause();
 
  printf("I have been waken up.\n",ret);
 
  }
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章