工作這個程序CTRL-C處理程序無法正常
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <windows.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
void INThandler(int);
int main(void)
{
signal(SIGINT, INThandler);
char data[128];
int n;
while((n=read(0, data, 128)) > 0)
{
if(data[n] = '\n') break;
}
data[n] ='\0';
printf("%s", data);
return 0;
}
void INThandler(int sig)
{
char c;
signal(sig, SIG_IGN);
printf("OUCH, did you hit Ctrl-C?\n"
"Do you really want to quit? [y/n] ");
c = getchar();
if (c == 'y' || c == 'Y')
exit(0);
else
signal(SIGINT, INThandler);
}
無法處理CTRL-C,但在那輸入終止。 如果我更換由
while (1)
Sleep(1);
的處理函數被調用和工程處理程序安裝和收益之間的一切,但我想有閱讀()在那裏。
編輯:這個節目回首,我發現我有
if(data[n] = '\n') break;
我寫了「=」而不是「==」,但使用後,它不能正確和我的工作不明白爲什麼。它不應該是檢測'\ n'的比較嗎? 另外,我搞砸了緩衝區,但我不能保持輸入,如果我打CTRL-C。
我明白了,所以它取決於SO。到目前爲止,我沒有使用Windows的問題,然後在Unix上進行測試。謝謝。 – Aleister 2013-03-06 13:35:47