C、 在使用过程中出现编译错误";usleep“;功能

C、 在使用过程中出现编译错误";usleep“;功能,c,ubuntu,C,Ubuntu,我使用Ubuntu Linux。当我尝试使用“usleep”函数时,我得到了关于“函数usleep的隐式声明”的信息。以下是错误代码: muteks.c:70:4: warning: implicit declaration of function ‘usleep’ [-Wimplicit-function-declaration] usleep(300); ^ 源代码: #include <stdlib.h> #include <stdio.h> #i

我使用Ubuntu Linux。当我尝试使用“usleep”函数时,我得到了关于“函数usleep的隐式声明”的信息。以下是错误代码:

muteks.c:70:4: warning: implicit declaration of function ‘usleep’ [-Wimplicit-function-declaration]
    usleep(300);
    ^
源代码:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <pthread.h>

void * klientWatek (void* arg);
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static int lKf = 10;
int lKl = 15;

int main ()
{
        pthread_t *klientTab;
        int *klientTabId;
        int lKr = 1;
        int i;
        // pamięć dla identyfikatora wątku
        klientTab = (pthread_t *) malloc (lKl* sizeof (pthread_t));
        klientTabId = (int *) malloc (lKl*sizeof (int)); //pamięć dla id
        // będącego argumentem przekazywanym do  funkcji
        for (i=0; i<lKl; i++) klientTabId[i]=i; //przypisanie

        printf("\nOtwieramy pub (simple)!\n");
        printf("\nLiczba wolnych kufli %d\n", lKf);

        for (i=0; i<lKl; i++)
        {
                pthread_create (&klientTab[i], NULL, klientWatek, 
                &klientTabId[i]);
        }

        for (i=0; i<lKl; i++)
        { //wątek joinable, ręcznie zwalniamy zasoby
                pthread_join (klientTab[i], NULL);
        }

        printf("\nZamykamy pub!\n");
        printf("\nLiczba wolnych kufli %d\n", lKf);

void * klientWatek (void * argWsk)//zostanie przekazany klientTabId[i]
{
        int mojId = * ( (int *) argWsk);
        int i,j;

        int pobranoKufel = 0;
        int ileMuszeWypic = 2;

        printf ("\nKlient %d, wchodzę do pubu\n", mojId);

        for (i=0; i<ileMuszeWypic; i++)
        {
           do
           {
              pthread_mutex_lock(&mutex);
              if (lKf > 0)
              {
                printf("\nSprawdziłem, czy jest wolny kufel\n");
                lKf--;
                pobranoKufel = 1;
                printf("\nWziąłem kufel\n");
              }

              pthread_mutex_unlock(&mutex);
            } while (pobranoKufel == 0);
          printf("\nKlient %d, wybieram kufel\n", mojId);

          j=0;
          printf("\nKlient %d, nalewam z kranu %d\n", mojId, j);
          usleep(300);

          printf("\nKlient %d, pije\n", mojId);
          nanosleep((struct timespec[]){{0, 500000000L}},NULL);

          printf("\nKlient %d, odkladam kufel\n", mojId);

          if (pobranoKufel == 1)
          {
             pthread_mutex_lock(&mutex);
             pobranoKufel=0;
             lKf++;
             pthread_mutex_unlock(&mutex);
          }
        }
        printf("\nKlient %d, wychodzę z pubu\n", mojId);

        return (NULL);
}
要编译它,我现在该怎么办?

usleep()
在您未包含的标准头
unistd.h
中声明。包括:

#include <unistd.h>
#包括

请注意:
usleep()
自POSIX-2008以来已被删除,建议改用。

usleep()
在您未包含的标准标题
unistd.h
中声明。包括:

#include <unistd.h>
#包括

请注意:
usleep()
自POSIX-2008以来已被删除,建议改用。

\include
请参见《美国睡眠手册》

\include

准确地看那个男人。现在一切都好了。谢谢。@Martini,但请注意,
usleep
自POSIX-2001起已过时,并自POSIX-2008起从标准中删除。所以,你应该考虑使用<代码> NoSoeLeP()/<代码>。谢谢。我应该这样使用它:
nanosleep((struct timespec[]){{0,300L},NULL)?@Martini是的,看起来不错。如果失败或被中断,您还需要检查
nanosleep()
的返回代码。确定:)。谢谢您的回复!确切地现在一切都好了。谢谢。@Martini,但请注意,
usleep
自POSIX-2001起已过时,并自POSIX-2008起从标准中删除。所以,你应该考虑使用<代码> NoSoeLeP()/<代码>。谢谢。我应该这样使用它:
nanosleep((struct timespec[]){{0,300L},NULL)?@Martini是的,看起来不错。如果失败或被中断,您还需要检查
nanosleep()
的返回代码。确定:)。谢谢您的回复!
#include <unistd.h>