我认为我的代码不会打印文本
哦,为什么来这里!\n
但确实如此。
有什么“错误”system()
吗?因为,当我删除它时,代码按照我的意愿运行,停止了。
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
pthread_t id0, id1;
sem_t sp;
void *fun0(void *) {
// When erasing the following line "system("");",
// it block up, and doesn't print "oh why come here!\n".
// But with it, it print the text!
system("");
return NULL;
}
void *fun1(void *) {
sem_wait(&sp);
fprintf(stderr, "oh why come here!\n");
return NULL;
}
int main() {
sem_init(&sp, 0, 0);
pthread_create(&id0, 0, fun0, NULL);
pthread_create(&id1, 0, fun1, NULL);
void *stat0, *stat1;
pthread_join(id0, &stat0);
pthread_join(id1, &stat1);
return 0;
}
编译器:gcc 4.1.2 Linux 内核:2.6.18
我用 gcc 4.6.3、内核 3.2.0 编译它,它也可以按我的意愿运行。所以我认为是因为 gcc 4.1.2 或内核 2.6.18。