gpt4 book ai didi

c - 使用信号量运行程序

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:12 24 4
gpt4 key购买 nike

我从官方 geeks4geeks 站点获得了这个程序,它在 2 个线程之间使用信号量:

// C program to demonstrate working of Semaphores 
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>

sem_t mutex;

void* thread(void* arg)
{
//wait
sem_wait(&mutex);
printf("\nEntered..\n");

//critical section
sleep(4);

//signal
printf("\nJust Exiting...\n");
sem_post(&mutex);
}


int main()
{
sem_init(&mutex, 0, 1);
pthread_t t1,t2;
pthread_create(&t1,NULL,thread,NULL);
sleep(2);
pthread_create(&t2,NULL,thread,NULL);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
sem_destroy(&mutex);
return 0;
}

根据这个网站的运行,它会打印这个结果:

Entered..

Just Exiting...

Entered..

Just Exiting...

在我的 ubuntu linux 计算机中,我使用 gcc main.c -lpthread -lrt 编译它并成功编译但之后尝试使用 ./main.c 运行它给我这些错误:

./main.c: line 8: sem_t: command not found
./main.c: line 10: syntax error near unexpected token `('
./main.c: line 10: `void* thread(void* arg)'

我应该用不同的命令运行它还是我在这里遗漏了其他东西?请帮忙。

最佳答案

编译代码后,您应该有一个名为 a.out 的文件,这是可执行文件。使用 ./a.out 运行它.您可以使用选项给可执行文件另一个名称 -o <name> .无论如何,检查man gcc了解更多信息。编译代码的完整命令是

gcc main.c -o main -lpthread -lrt

关于c - 使用信号量运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56308352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com