【发布时间】:2015-02-25 23:28:43
【问题描述】:
哪里有for(;;) 我需要从标准输入读取一些内容并保存到N。
read(stdin,N,sizeof(float)) 和 while(s!=EOF) s=getc(stdin) 也许有什么? 我假设一个数字列表保存在标准输入分隔的行尾
问题是这样的:
您的程序必须将其 pid 打印到标准输出。然后它应该开始从标准输入中读取 N 的值,直到文件结束。接收到信号(SIGUSR1)后,您的程序应从 sum(sum=0 的第一个值)中减去(然后乘法,然后除法,然后减去)N 的值作为一个循环。收到 SIGUSR2 后,您的程序应打印当前总和。
我如何解释问题和尝试:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
float N,sum=0;
int count=0;
void handler(int s){
count++;
if (s==SIGUSR1){
if (count==1){
sum-=N;
}
if (count==2){
sum*=N;
}
if (count==3){
sum/=N;
}
if (count==4){
sum+=N;
count==0;
}
}
else if (s==SIGUSR2){
printf("sum=%d",sum);
}
}
int main(){
pid_t pid=getpid();
signal(SIGUSR1,handler);
signal(SIGUSR2,handler);
printf("%d",pid);
fflush(stdout);
for(;;)
scanf("%d",&N);
return(0);
}
【问题讨论】:
-
我很困惑。你的问题到底是什么?看起来你已经想通了一切。你的
scanf电话有问题吗?我唯一的建议是在您的每个printf调用中添加换行符 (\n)。 -
程序在他们的检查器上显示“超出墙时间限制”。那么,当它是 EOF(标准输入)时,我怎样才能打破“for”循环?