Ir para conteúdo
Fórum Script Brasil
  • 0

biblioteca semaphore.h


LucasSouza

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

Olá!

Durante a compilação de um programa existem duas fases:

1- A compilação propriamente dita, que é o processo em que é gerado o arquivo objeto do seu código

2- A linkagem, que é a geração do executável através da união de todo o código necessário pelo seu programa. Isto inclui o arquivo objeto gerado no passo anterior e mais os outros arquivos objeto contendo as funções não definidas no seu código como o printf ou o sem_init.

No caso do printf, por ser uma função padrão, já é parte integrante do compilador e portanto já é adicionada automaticamente. Já para a função sem_init o compilador não inclui automaticamente então você deve especificar.

A adição do semaphore.h no seu código apenas declara que existe a função com os parâmetros informados. Assim o compilador consegue executar o primeiro passo mas não o segundo.

Se você estiver compilando no linux com o gcc, use a seguinte sintaxe:

gcc -pthread -o programa arquivo.c
Sendo programa o nome do executável que será gerado e arquivo.c o nome do seu arquivocom o código fonte. Além disso a função sem_init deve receber o endereço do semáforo. O correto seria chamar ela assim:
sem_init(&customers,TRUE, 0);

Abraços,

Marcelo Utikawa da Fonseca

Editado por Marcelo Utikawa da Fonseca
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...