fork之后,内存创建副本进程,并且返回pid
pid标识子进程和父进程
pid<0, fork出错
pid=0,子进程
pid>0, 父进程
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。
相当于复制一个对象。
#管道
管道并非属于进程资源,而是和套接字一样,属于操作系统资源(也就不是fork函数的复制对象
#include#include #define BUF_SIZE 30 int main(int argc, char *argv[]) { int fds[2]; char str[] = "Who are you?"; char buf[BUF_SIZE]; pid_t pid; pipe(fds); pid = fork(); if (pid == 0) { write(fds[1], str, sizeof(str)); } else { read(fds[0], buf, BUF_SIZE); puts(buf); } return 0; }
示例代码实现了一个单工通信的管道,
fork复制的并非管道,而是用于管道I/O的文件描述符
文件描述符数组fds[2]
index = 0是读端
index = 1 是写端
ref: https://www.cnblogs.com/beiluowuzheng/p/9691148.html



