当前位置: 技术问答>linux和unix
简单的程序,有些问题不解
来源: 互联网 发布时间:2016-12-06
本文导语: #include #include #include #include pthread_mutex_t mutex; pthread_cond_t cond; static int flag; void test() { pid_t pid; pid = fork(); if (pid && !flag++) pthread_cond_wait(&cond, &mutex); if (0 == pid) ...
#include
#include
#include
#include
pthread_mutex_t mutex;
pthread_cond_t cond;
static int flag;
void test()
{
pid_t pid;
pid = fork();
if (pid && !flag++)
pthread_cond_wait(&cond, &mutex);
if (0 == pid)
printf("Child processn");
else if (pid - EOF)
printf("Dad processn");
else
exit(EXIT_FAILURE);
if (0 == pid && flag++)
pthread_cond_signal(&cond);
}
int main()
{
printf("main functionn");
test();
return 0;
}
这个程序使用条件变量是为了让子进程先执行,可是输出了Child process就不动了,什么原因呢
|
这是用于线程同步的吧,至少目前我还没有看到有可以同步父子进程的说明
|
条件变量用于进程之间时,自身应该放在共享内存中
并且设置
pthread_condattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
并且设置
pthread_condattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);