在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(fd);

本文介绍了Linux内核中的fork函数用于创建进程,并详细解释了其返回值的含义。同时,文章探讨了lockf函数在进程同步中的作用,将其比喻为PV操作,用于对共享资源的访问进行控制。通过示例展示了如何使用lockf进行文件锁定和解锁。文中还提到了一个错误处理策略,即在进程创建失败时,通过循环确保进程最终能成功创建。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



