次のプログラムでは、_XOPEN_SOURCE
行のコメントを外すと、C-c
になるとプログラムが終了し、同じプログラムが終了しません。その行にコメントしないと、プログラムは終了します。誰でも、どのようにして_XOPEN_SOURCE
が信号処理に影響するのか知っていますか?私はgcc(4.6.3)とglibc(2.15)を使ってLinux上にいる。信号処理機能のインストール時にXOPEN_SOURCEと信号処理
/* #define _XOPEN_SOURCE 700 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
typedef void (*sighandler_t)(int);
void handle_signal(int signo)
{
printf("\n[MY_SHELL] ");
fflush(stdout);
}
int main()
{
int c;
signal(SIGINT, SIG_IGN);
signal(SIGINT, handle_signal);
printf("[MY_SHELL] ");
while ((c = getchar()) != EOF) {
if (c == '\n')
printf("[MY_SHELL] ");
}
printf("\n");
return 0;
}
脇に、 'char c':いいえ、いいえ、いいえ、いいえ、いいえ。 'EOF'はアウトオブバンドである必要があります。それで 'getchar'が' int'を返すのです。 – Dave
@Daveあなたは正しいです。それは実際に私がインターネット上で見つけた例でした。私はそれに気付かなかった。それを今修正する。 – yasar