当前位置: 技术问答>linux和unix
pipe(a)了一次,又PIPE(a)了一次,是建立了两个管道,还是同一个?
来源: 互联网 发布时间:2016-03-24
本文导语: pipe(a)了一次,又PIPE(a)了一次,是建立了两个管道,还是同一个? | $ cat pipe.c #include #include int main() { int fd[2]; pipe(fd); printf("%d, %dn", fd[0], fd[1]); pipe(fd); printf("%d, %dn", fd[0], fd[1]); ...
pipe(a)了一次,又PIPE(a)了一次,是建立了两个管道,还是同一个?
|
$ cat pipe.c
#include
#include
int main()
{
int fd[2];
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
pause();
}
$ ./a.out &
3, 4
5, 6
[1] 10235
thomas@apollo:~/code/tmp$ ls -l /proc/10235/fd
总用量 0
lrwx------ 1 0 -> /dev/pts/7
lrwx------ 1 1 -> /dev/pts/7
lrwx------ 1 2 -> /dev/pts/7
lr-x------ 1 3 -> pipe:[73302]
l-wx------ 1 4 -> pipe:[73302]
lr-x------ 1 5 -> pipe:[73303]
l-wx------ 1 6 -> pipe:[73303]
我还是认为创建了两个pipe
#include
#include
int main()
{
int fd[2];
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
pause();
}
$ ./a.out &
3, 4
5, 6
[1] 10235
thomas@apollo:~/code/tmp$ ls -l /proc/10235/fd
总用量 0
lrwx------ 1 0 -> /dev/pts/7
lrwx------ 1 1 -> /dev/pts/7
lrwx------ 1 2 -> /dev/pts/7
lr-x------ 1 3 -> pipe:[73302]
l-wx------ 1 4 -> pipe:[73302]
lr-x------ 1 5 -> pipe:[73303]
l-wx------ 1 6 -> pipe:[73303]
我还是认为创建了两个pipe
|
管道在linux下也是按文件对待的,都是以文件名(包括全路径名的文件名)来在系统内标识唯一的。
和你创建普通文件一样。
在一个系统内不可能存在两个文件名相同的文件的。
和你创建普通文件一样。
在一个系统内不可能存在两个文件名相同的文件的。
|
我实验了一下:
$ cat pipe.c
#include
#include
int main()
{
int fd[2];
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
}
$ gcc pipe.c
$ ./a.out
3, 4
5, 6
我认为是新建了一对pipe
$ cat pipe.c
#include
#include
int main()
{
int fd[2];
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
pipe(fd);
printf("%d, %dn", fd[0], fd[1]);
}
$ gcc pipe.c
$ ./a.out
3, 4
5, 6
我认为是新建了一对pipe