Nullの未定義
解決したいこと
授業でlinuxのヘッダを用いてC言語のプログラムを行うため自分のpcにその環境を作ろうとしました。vscodeでwslリモート接続を用いてlinux環境のc言語のプログラミングをしようとしています。拡張機能を使ってエラー等に対して波線が出るようにしていたのですが、NULLに対して定義されていないというエラーが出力されました。コンパイルと実行は成功するのですが、常にエラー表示されているのを修正したいです。
該当するソースコード
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#define BUFSIZE 256
#define TIMEOUT 10
void myalarm(int sec)
{
static int shared_pid = 0;
int pid;
if (shared_pid != 0)
{
kill(shared_pid, SIGTERM);
}
if ((pid = fork()) == -1)
{
perror("fork failed.");
exit(1);
}
if (pid == 0)
{
/*child process*/
sleep(sec);
kill(getppid(), SIGALRM);
exit(0);
}
else
{
/*parent process*/
shared_pid = pid;
return;
}
}
void timeout()
{
printf("This program is timeout.\n");
exit(0);
}
int main()
{
char buf[BUFSIZE];
if (signal(SIGALRM, timeout) == SIG_ERR)
{
perror("signal failed.");
exit(1);
}
myalarm(TIMEOUT);
while (fgets(buf, BUFSIZE, stdin) != NULL)//このnullに対して「識別子"NULL"は定義されていません」
{
printf("echo: %s", buf);
myalarm(TIMEOUT);
}
}
自分で試したこと
Nullの定義はstddef.hにあると書いているサイトを見つけたのでincludeしても結果は変わりませんでした。
(ヘッダの中身は下記)
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __always_inline
#define __always_inline __inline__
#endif
0