在linux内核中,fork函数用于创建进程
系统调用格式:
pid=fork()
fork()返回值的意义:
0 在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。
当大于0 在父进程中,pid变量保存的fork()返回值为子进程的id值(进程唯一标识符)
-1 创建失败
lockf函数用于对进程进行上锁和解锁,这就相当于PV操作,对共有资源进行限制。
参数定义
int lockf(files,function,size)
int files,function;
long size;
其中files是文件描述符,function是锁定和解锁,1表示锁定,0表示解锁,size是锁定或解锁的字节数,若用0,表示从文件的当前位置到文件尾。
while((pid1=fork()==-1);
这句话的意思是当进程创建失败的时候,我们知道fork()返回值为-1代表创建失败,我们继续进行创建,直到进程创建成功。
lockf(fd[1],1,0)
这句话就意味着在向fd[1]这个位置输入字符前对它进行锁定
与此相对应的
lockf(fd[1],0,0)
这句话意味着解锁。
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
int pid1,pid2;
main()
{
int fd[2];
char buf_out[100],buf_in[100];
pipe</