PV操作输出完整的cute或者shuai
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/sem.h>
union semun{int val;};
int main()
{
int id = semctl(1234, 1,IPC_CREAT|0644);
union semun su = {1};
semctl(id,1,SETVAL,su);
pid_t pid = fork();
if(pid == 0)
{
int i;
for(i=0;i<5;i++)
{
P(id);
printf("cu");
sleep(1);
printf("te\n");
V(id);
sleep(1);
}
}
else
{
int i;
for(i=0;i<5;i++)
{
P(id);
printf("sh");
sleep(1);
printf("uai\n");
V(id);
}
wait(NULL);
}
exit(0);
}
静态库
创建一个PV.c文件
#include <stdio.h>
#include <sys/sem.h>
void P(int id)
{
struct sembuf buf[1] = {{0, -1, 0}};
semop(id, buf, 1);
}
void V(int id)
{
struct sembuf buf[1] = {{0, -1, 0}};
semop(id, buf, 0);
}
命令:
gcc -c PV.c
ar -rc libPV.a PV.o
使用静态库:
gcc cuteshuai.c libPV.o -o cuteshuai
动态库
命令:
gcc PV.c -fPIC -shared -o libmyPV.so
使用动态库:
gcc cuteshuai.c -L. lmyPV -o cuteshuai
ldd cuteshuai 命令可以查看动态库挂载情况
动态库没存在默认路径可能会找不到动态库
三种挂载方法
1.把动态库复制到默认路径:cp libmyPV.so /lib64
2.把动态库路径写入ldconfig: vim /etc/ld.so.conf.d/30.conf
3.修改环境变量:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
重启后会该变量会恢复