linux 进程间信号通知,线程间同步与通信 Test study Model
来源:互联网 发布:平果平板软件 编辑:程序博客网 时间:2024/05/16 18:26
#include <signal.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <pthread.h>
pthread_mutex_t mutex;
int shareValue=0;
void signalHandler(int sigID)
{
printf("signal is coming!\n");
return 0;
}
void childOver(int sigID)
{
int pid=wait(NULL);
shareValue=10;
// pthread_mutex_lock(&mutex);
printf("####################child process over!signal ID %d\n",sigID);
// pthread_mutex_unlock(&mutex);
return 0;
}
void *threadfun(void *arg)
{
printf("$$$$$$$$$$$$$$$$$$Thread start>>>sleep 5>>>>>>>>!thread id:%ld\n",pthread_self());
sleep(5);
printf("$$$$$$$$$$$$$$$$child Thread errno :%d,%s,thraed id:%ld\n",errno,strerror(errno),getpid());
pthread_mutex_lock(&mutex);
//sleep(10);
printf("lock value for add:%d,and sleep 5 seconds!\n",shareValue++);
sleep(5);
pthread_mutex_unlock(&mutex);
pthread_exit(0);
}
int main()
{
pthread_mutexattr_t mutexAttr;
pthread_mutexattr_init(&mutexAttr);
pthread_mutexattr_setpshared(&mutexAttr,PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&mutex,&mutexAttr);
signal(SIGWINCH,signalHandler);
signal(SIGCHLD,childOver);
int i=0;
pthread_t tid;
pthread_create(&tid,NULL,threadfun,NULL);
sleep(4);
//for(;i<10;i++)
{
if(fork()==0)
{
pthread_t ctid;
printf("**************create child process ID %d\n",getpid());
pthread_create(&ctid,NULL,threadfun,NULL);
i=pthread_join(ctid,NULL);
printf("**************child process exit!*******status:%d:%s:pthread_join return value:%d*******\n",errno,strerror(errno),i);
exit(0);
}
}
i=sleep(15);
printf("&&&&&&&&&&sleep interrupt happen,error reason :%s,error code :%d\n",strerror(i),i);
printf("&&&&&&&&&&&&&ERRON NO:%d,error reason :%s\n",errno,strerror(errno));
printf("&&&&&&&&&&&&&&&&process ID %d!\n",getpid());
// #include "common.hisleep(10);
printf("sleep return status :%d\n",sleep(10),errno);
// while(1){};
pthread_join(tid,NULL);
pthread_mutexattr_destroy(&mutexAttr);
pthread_mutex_destroy(&mutex);
exit(0);
return 0;
}
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <pthread.h>
pthread_mutex_t mutex;
int shareValue=0;
void signalHandler(int sigID)
{
printf("signal is coming!\n");
return 0;
}
void childOver(int sigID)
{
int pid=wait(NULL);
shareValue=10;
// pthread_mutex_lock(&mutex);
printf("####################child process over!signal ID %d\n",sigID);
// pthread_mutex_unlock(&mutex);
return 0;
}
void *threadfun(void *arg)
{
printf("$$$$$$$$$$$$$$$$$$Thread start>>>sleep 5>>>>>>>>!thread id:%ld\n",pthread_self());
sleep(5);
printf("$$$$$$$$$$$$$$$$child Thread errno :%d,%s,thraed id:%ld\n",errno,strerror(errno),getpid());
pthread_mutex_lock(&mutex);
//sleep(10);
printf("lock value for add:%d,and sleep 5 seconds!\n",shareValue++);
sleep(5);
pthread_mutex_unlock(&mutex);
pthread_exit(0);
}
int main()
{
pthread_mutexattr_t mutexAttr;
pthread_mutexattr_init(&mutexAttr);
pthread_mutexattr_setpshared(&mutexAttr,PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&mutex,&mutexAttr);
signal(SIGWINCH,signalHandler);
signal(SIGCHLD,childOver);
int i=0;
pthread_t tid;
pthread_create(&tid,NULL,threadfun,NULL);
sleep(4);
//for(;i<10;i++)
{
if(fork()==0)
{
pthread_t ctid;
printf("**************create child process ID %d\n",getpid());
pthread_create(&ctid,NULL,threadfun,NULL);
i=pthread_join(ctid,NULL);
printf("**************child process exit!*******status:%d:%s:pthread_join return value:%d*******\n",errno,strerror(errno),i);
exit(0);
}
}
i=sleep(15);
printf("&&&&&&&&&&sleep interrupt happen,error reason :%s,error code :%d\n",strerror(i),i);
printf("&&&&&&&&&&&&&ERRON NO:%d,error reason :%s\n",errno,strerror(errno));
printf("&&&&&&&&&&&&&&&&process ID %d!\n",getpid());
// #include "common.hisleep(10);
printf("sleep return status :%d\n",sleep(10),errno);
// while(1){};
pthread_join(tid,NULL);
pthread_mutexattr_destroy(&mutexAttr);
pthread_mutex_destroy(&mutex);
exit(0);
return 0;
}
- linux 进程间信号通知,线程间同步与通信 Test study Model
- Linux进程、线程与进程间通信
- Linux进程间通信与同步
- Linux进程间同步与通信
- Linux 进程间通信 信号
- linux进程间通信--信号
- Linux进程间通信--信号
- Linux进程间通信 -- 信号
- Linux进程间通信-信号
- Linux进程间信号通信
- Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知
- Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知
- Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知
- Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知
- Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知
- 11-进程间通信-信号通信(功能:事件通知)
- Linux 进程间通信 --- 信号通信 --- signal
- linux进程间通信-信号通信
- 未找到可用于建立连接的介质筛选器组合
- java后台向前台传一个list,前台接收报错
- JavaEE关联Oracle数据库
- 简单的讲述xp系统电脑配件的选择
- C++在VS2008的IDE环境中操作Excel2007(基础)
- linux 进程间信号通知,线程间同步与通信 Test study Model
- vc_各类型数据最大值
- MySQL 索引方式
- ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
- 记录iphone
- 创建ZWCAD实体--弧长标注
- Android(Java):jni源代码
- eWebeditor V2.8增加分页功能
- 10种方法将使你的Windows系统崩溃