新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > linux基础复习(8)进程通信

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

作者: 时间:2016-10-08 来源:网络 收藏

n pid>0 将信号发送给进程ID为pid的进程。

本文引用地址:https://www.eepw.com.cn/article/201610/305812.htm

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=%dn,pid);

if((waitpid(pid,NULL,WNOHANG))==0){

if((ret=kill(pid,SIGKILL))==0)

printf(kill %dn,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);

}


上一页 1 2 3 下一页

关键词:

评论


相关推荐

技术专区

关闭