【发布时间】:2019-12-03 06:25:37
【问题描述】:
编写一个可以显示文本字符串(仅由 26 个字母和空格组成)的程序。该程序应该分叉 27 个工作进程。每个工作进程运行一个无限循环,在该循环中它等待来自控制器(即父级)的信号,休眠 1 秒,打印其预定义字符,向控制器发出信号,然后再次阻塞。控制器从键盘读取一个字符串,然后以正确的顺序向工作人员发出信号以显示该字符串 以下是我的代码,但我没有得到输出,它没有打印任何东西。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/types.h>
#include <string.h>
int
main()
{
/*...declarations and stuff....*/
scanf("%s",inputString);
length=strlen(inputString);
for (i=0;i<27;i++)
{
pid[i]=fork();
if (pid[i]==0)
{
/*...Declare my character...*/
while (1)
{
pause();
sleep(1);
printf("%c",myChar);
kill(ppid,SIGCONT);
}
return 0;
}
}
for (i=0;i<length;i++)
{
int temp=inputString[i];
if (temp==32)
{
kill(pid[0],SIGCONT);
}
else
{
kill(pid[temp-96],SIGCONT);
}
pause();
}
for(i=0;i<27;i++)
kill(pid[i],SIGTERM);
return 0;
}
【问题讨论】:
-
for(i=0;i