进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。
程序是
放到磁盘的可执行文件,进程是指程序执行的实例
1. fork:子进程拷贝父进程的数据段
vfork:子进程与父进程共享数据段
2. fork:父、子进程的执行次序不确定
vfork:子进程先运行,父进程后运行
完成一个写和读的进程,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
void ChildWrite()
{
int fd,ret;
char buf[100]={0};
fd=open("hello.txt",O_WRONLY|O_CREAT|O_EXCL,S_IRWXU);
if(-1==fd)
{
perror("open1");
exit(1);
}
while(1)
{
scanf("%s",buf);
ret=write(fd,buf,strlen(buf));
if(-1==ret)
{
perror("write");
exit(1);
}
if(!strncmp(buf,"end",3))
{
break;
}
memset(buf,0,sizeof(buf));
}
}
void ParentRead()
{
int fd,ret;
char buf[100]={0};
fd=open("hello.txt",O_RDONLY);
if(-1==fd)
{
perror("open2");
exit(1);
}
while(1)
{
ret=read(fd,buf,sizeof(buf));
if(-1==ret)
{
perror("read");
exit(1);
}
else if(0!=ret)
{
printf("read from txt:%s\n",buf);
}
memset(buf,0,sizeof(buf));
}
}
int main()
{
pid_t pid;
pid=fork();
if(-1==pid)
{
perror("fork");
exit(1);
}
else if(0==pid)
{
ChildWrite();
}
else
{
ParentRead();
}
return 0;
}