问题解决了.
我在main最后加了四句话,附上完整的程序:
#include
#include
#include
#include
sem_t s;
sem_t p;
sem_t c;
int in=0;
int out=0;
char buffer[10];
pthread_mutex_t print_m;
void pp()
{
int i=0;
printf("buffer: ");
for(i;i!=strlen(buffer);i++)
printf("%c ",buffer);
printf("in=%d out=%d\n",in,out);
}
void* producer(char *a)
{
pthread_mutex_lock(&print_m);
printf("%s is running\n",a);
pthread_mutex_unlock(&print_m);
while(1)
{
sem_wait(&p);
sem_wait(&s);
pthread_mutex_lock(&print_m);
printf("%s Produced:",a);
//setbuf(stdin,NULL);
scanf("%c",&a