2017-01-26 13 views
4

Я получаю предупреждение> Неявное объявление функции 'wait' <, и когда я запускаю программу, она работает правильно, я хотел бы понять, почему я получаю это предупреждение?Неявное объявление функции 'wait'

Заранее спасибо

Edit: Я забыл добавить библиотеку включены

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


void create (char* program, char** arg_list) 
{ 
    /* put your code here */ 
    pid_t childPid; 
    int status; 

    if((childPid = fork()) < 0){ 
    printf("Failed to fork() --- exiting...\n"); 
    exit(1); 
    } 
    else if (childPid == 0){ // --- inside the child process 
    if(execvp(program, arg_list) < 0){ // Failed to run the command 
     printf("*** Failed to exec %s\n", program); 
     exit(1); 
    } 
    } 
    else{ // --- parent process 
    while(wait(&status) != childPid) 
     printf("...\n"); 
    } 
} 
+0

Вы упускаете '# include' линии для функции. – Barmar

ответ

14

Вы, вероятно, не хватает заголовки для wait(2):

#include <sys/types.h> 
    #include <sys/wait.h> 
+0

Спасибо, я забыл библиотеку ожидания – AyeJay

2

Вам нужно положить:

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

в верхней части программы, чтобы получить объявление функции.

Это показано в man page

Смежные вопросы