Test1.cpp:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <fcntl.h>
#include <semaphore.h>
#include <string>
using namespace std;
int main()
{
ofstream Outfile("/home/haha/code/ch07/out_text.txt",ios::app);
sem_t * Sem;
int value=0;
string sName="/Pole";
Sem = sem_open(sName.c_str(),O_CREAT,S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH,1);
if(Sem == SEM_FAILED || Sem == NULL)
{
cout<<"Failed!"<<endl;
exit(-1);
}
else
{
cout<<"SUccessfully"<<endl;
}
sem_getvalue(Sem,&value);
for (long Count = 1; Count < 100; ++Count)
{
sem_wait(Sem);
sem_getvalue(Sem,&value);
Outfile<<"Process Test1 "<<Count<<endl;
cout<<"Preocess 1 In!"<<endl;
sleep(1);
sem_post(Sem);
sem_getvalue(Sem,&value);
}
Outfile.close();
sem_unlink(sName.c_str());
cout<<"Begin to Return:"<<endl;
return 0;
}
Test2.cpp
#include <semaphore.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <fcntl.h>
#include <string>
using namespace std;
int main()
{
ofstream Outfile("/home/haha/code/ch07/out_text.txt",ios::app);
int value=0;
sem_t *Sem;
string sName="/Pole";
Sem = sem_open(sName.c_str(),O_CREAT,S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH,1);
int i=sem_unlink(sName.c_str());
sem_getvalue(Sem,&value);
if(Sem == SEM_FAILED || Sem == NULL)
{
cout<<"Failed!"<<endl;
exit(-1);
}
else
{
cout<<"SUccessfully"<<endl;
}
for (long Count = 1; Count < 100; ++Count)
{
sem_wait(Sem);
sem_getvalue(Sem,&value);
Outfile<<"Process Test2 "<<Count<<endl;
cout<<"Preocess 2 In!"<<endl;
sleep(0.5);
sem_post(Sem);
sem_getvalue(Sem,&value);
}
Outfile.close();
return 0;
}
g++ -o Test1 Test1.cpp -lrt
g++ -o Test2 Test2.cpp -lrt
linux 进程同步
最新推荐文章于 2024-03-26 20:25:41 发布