관리 메뉴

솜씨좋은장씨

[GCC/C] error: implicit declaration of function 'wait' is invalid in C99 [-Werror,-Wimplicit-function-declaration] 해결 방법 본문

Programming/C | C++

[GCC/C] error: implicit declaration of function 'wait' is invalid in C99 [-Werror,-Wimplicit-function-declaration] 해결 방법

솜씨좋은장씨 2023. 3. 4. 18:58
728x90
반응형

👨🏻‍💻 발생 에러

Abraham Silberschatz Operating System Concepts-10th-2018 으로 운영체제 스터디를 하면서

각 챕터에 나오는 C 코드들을 실제로 작성해서 실행 시켜보던 중에 

# figure322_2.c

#include <sys/types.h> 
#include <stdio.h> 
#include <unistd.h>

int main() {
      pid_t pid;
      /* fork a child process */
      pid = fork();

      if (pid < 0) { 
      /* error occurred */ 
            fprintf(stderr, "Fork Failed"); 
            return 1;
      } else if (pid == 0) { 
      /* child process */
            execlp("/bin/ls","ls",NULL);
            printf("LINE J");
      } else { 
            wait(NULL);
            printf("Child Complete");
      }
      return 0;
}
$ gcc figure322_2.c -o figure3222
figure322_2.c:20:13: error: implicit declaration of function 'wait' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
            wait(NULL);
            ^
1 error generated.

위와 같은 에러가 발생하였습니다.

 

이를 해결하는 방법은 아주 간단합니다.

👨🏻‍💻 해결 방법

include 목록에 sys/wait.h 를 추가 (#include <sys/wait.h>)한 뒤 다시 실행해보면 됩니다.

#include <sys/types.h> 
#include <stdio.h> 
#include <unistd.h>
#include <sys/wait.h>

int main() {
      pid_t pid;
      /* fork a child process */
      pid = fork();

      if (pid < 0) { 
      /* error occurred */ 
            fprintf(stderr, "Fork Failed"); 
            return 1;
      } else if (pid == 0) { 
      /* child process */
            execlp("/bin/ls","ls",NULL);
            printf("LINE J");
      } else { 
            wait(NULL);
            printf("Child Complete");
      }
      return 0;
}

위와 같이 (#include <sys/wait.h>)를 추가 한 뒤 실행해보면 문제 없이 실행이 되는 것을 볼 수 있습니다.

 

읽어주셔서 감사합니다.

Comments