无名PIPE的读端和写端都默认以阻塞的方式操作。
但又分为有没有进程访问写端,有没有进程访问读端。
管道中目前有没有数据,
如果管道中有数据,是大于要读出的数据,还是小于要读出的数据。。。。
编程真的要考虑到最细微的内存字节处,所以这种人作事,计划得会周密吧。
我记得有一个C的书上写过,编程的要旨就是一句话:看到好你的每一个字节!!!!
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 int main(void) 6 { 7 int p[2]; 8 pipe(p); 9 write(p[1], "helloworld", 10); 10 //close(p[1]); 11 char buf[128]; 12 memset(buf, '\0', 128); 13 int ret = -1; 14 ret = read(p[0], buf, 3); 15 printf("first, ret = %d, buf = %s\n", ret, buf); 16 ret = read(p[0], buf, 15); 17 printf("second, ret = %d, buf = %s\n", ret, buf); 18 }
输出:
[root@localhost ~]# ./pip2
first, ret = 3, buf = hel
second, ret = 7, buf = loworld
时间: 2024-09-14 13:37:13