标签:des style blog color io ar for sp 文件
dup,dup2 | |
目标 | 复制一个文件描述符 |
头文件 | #include <unistd.h> |
函数原型 |
newfd = dup(oldfd); newfd = dup2(oldfdm, newfd); |
参数 |
oldfd需要复制的文件描述符 newfd复制oldfd后得到的文件描述符 |
返回值 |
-1 发生错误 newfd 新的文件描述符 |
pipe | |
目标 | 创建管道 |
头文件 | #include <unistd.h> |
函数原型 |
result = pipe(int array[2]); |
参数 |
array包含两个int类型数据的数组 |
返回值 |
-1 发生错误 0 成功 |
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 #include <fcntl.h> 6 7 int main() 8 { 9 int len, i, apipe[2]; 10 char buf[BUFSIZ]; 11 12 if (pipe(apipe) == -1) 13 { 14 perror("could not make pipe"); 15 exit(1); 16 } 17 18 printf("Got a pipe! It is file descriptors: {%d %d}\n", apipe[0], apipe[1]); 19 20 int infd = open("/etc/passwd", O_RDONLY); 21 dup2(infd, 0); 22 int outfd = open("userlist", O_WRONLY); 23 dup2(outfd, 1); 24 25 26 while (fgets(buf, BUFSIZ, stdin)) 27 { 28 len = strlen(buf); 29 if (write(apipe[1], buf, len) != len) 30 { 31 perror("writing to pipe"); 32 break; 33 } 34 /* 35 for (i = 0; i < len; i++) 36 { 37 buf[i] = ‘X‘; 38 } 39 */ 40 len = read(apipe[0], buf, BUFSIZ); 41 if (len == -1) 42 { 43 perror("reading from pipe"); 44 break; 45 } 46 if (!fputs(buf, stdout)) 47 { 48 perror("writing to stdout"); 49 break; 50 } 51 } 52 53 return 0; 54 }
标签:des style blog color io ar for sp 文件
原文地址:http://www.cnblogs.com/bournet/p/4037643.html