首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

父进程与子进程交替打印字母//如何用pause()函数代替while(1)

2012-06-12 
父进程与子进程交替打印字母//怎么用pause()函数代替while(1)?[codeC/C+#include]stdio.h#includesign

父进程与子进程交替打印字母//怎么用pause()函数代替while(1)?
[code=C/C+#include] <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
int ppid, pid;
void parent(int signo){
static c = 'A';
printf("%c ", c);
fflush(stdout);
kill(pid, SIGUSR1);
if(c=='Z')exit(-1);
c++;
//pause();
}

void child(int signo){
static c = 'a';
printf("%c ", c);
fflush(stdout);
kill(ppid, SIGUSR1);
if(c=='z')exit(-1);
c++;
//pause();
}

int main()
{
signal(SIGUSR1, parent);
pid = fork();
if(pid==0){
signal(SIGUSR1, child);
ppid = getppid();
sleep(1);
kill(ppid, SIGUSR1);
while(1);
//pause();
}
pause();
while(1);
}+

[/code]

[解决办法]
你既然想交替打印,那当然得有循环。用pause代替while,.. 。。。 
如果使用pause,而不用sigsuspend,自然会出现信号在pause前发生,导致程序一直pause下去。

热点排行