当前位置: 技术问答>linux和unix
linux信号实现同步问题
来源: 互联网 发布时间:2017-01-30
本文导语: 本帖最后由 ReMeppo 于 2012-01-11 12:26:58 编辑 见Unix高级环境编程 10章 习题10.6: 实现父子进程的同步, 进程创建个文件写入整数0, 然后fork, 接着父子进程交替增加文件中计数器值, 每次计数器增1, 打印是哪个进...
实现父子进程的同步, 进程创建个文件写入整数0, 然后fork, 接着父子进程交替增加文件中计数器值, 每次计数器增1, 打印是哪个进程进行了增1操作
我按照书里的那五个同步函数来实现, 但是有问题, 自己觉得的原因写在代码注释里, 不知道是不是我的代码问题还是实现有问题... 求指教!!!
#include "apue.h" //一些头文件都放在里面
#include
#include
#include
#define FILE_PATH "/tmp/10-6Excise.file" //临时文件
static volatile sig_atomic_t sigflag; //进程间的信号标志
static sigset_t newmask, oldmask, zeromask; //屏蔽字
void TELL_WAIT();
void TELL_PARENT(pid_t pid);
void TELL_CHILD(pid_t pid);
void WAIT_PARENT();
void wait_CHILD();
static void sig_usr(int); //自定义信号处理函数
int main()
{
pid_t pid;
int fd;
char buf[128] = {0};
//写0
if((fd = open(FILE_PATH, O_CREAT | O_TRUNC | O_WRONLY))