Articles of pipe理员

具有poll()的命名pipe道上的O_RDWR

我已经经历了多种不同的命名pipe道客户端/服务器实现,但其中大部分使用读/写阻塞默认值。 因为我已经使用poll()来检查其他标志,但是通过poll()检查传入的FIFO数据也是一个好主意。 在所有的研究之后,我认为在O_RDWR模式下打开pipe道是防止在没有打开作者的情况下在pipe道上无限次数的EOF事件的唯一方法。 这样pipe道的两端都closures,其他客户端也可以打开可写入端。 要回应我会使用单独的pipe道… 我的问题是,虽然我发现了一些使用O_RDWR标志的例子,但open()手册页将该标志描述为分配给FIFO时正在使用。 ( http://linux.die.net/man/3/open ) 但是如何在不使用O_RDWR的情况下在pipe道上使用poll()呢? 你认为“O_RDWR”是一个合法的方式来打开pipe道?

每个TCP / IPnetworking连接使用多less内存?

平均每个TCP / IPnetworking连接占用多less内存(在内核地址空间中)?

由于内存不足导致分割错误

这段代码给了我大约1/2的分段错误时间: int main(int argc, char **argv) { float test[2619560]; int i; for(i = 0; i < 2619560; i++) test[i] = 1.0f; } 我实际上需要分配一个更大的数组,是否有某种方式允许操作系统让我获得更多的内存? 我正在使用Linux Ubuntu 9.10

Linuxpipe道作为input和输出

我想在Linux操作系统的C程序中执行以下操作: 使用系统调用(或2)创buildPIPE 使用exec()执行一个新的进程 将进程的STDIN连接到先前创build的pipe道。 将进程的输出连接到另一个PIPE。 这个想法是为了规避任何驱动器访问的性能目的。 我知道使用PIPE系统调用创buildpipe道非常简单,我可以使用popen创build一个用于input或输出目的的pipe道。 但是,如何在input和输出上做到这一点呢?

限制linux下R的内存使用

我们在Linux集群环境中运行R. 头节点有一些挂起时,用户无意中采取了所有的内存使用R进程。 有没有办法限制Linux下的内存使用情况? 我不想提出全球性的限制,但这可能是唯一的出路。

一些分配器是懒惰的吗?

我在Linux下编写了一个C程序mallocs内存,循环运行它,TOP没有显示任何内存消耗。 那么我已经做了一些内存,TOP显示内存消耗。 当我malloc,我真的“获得记忆”,还是有一个“懒惰”的内存pipe理,只有当我使用它时,给我的内存? (也有一个选项,TOP只知道内存消耗,当我使用它,所以我不知道这个..) 谢谢

带有/ dev / zero的mmap

假设我使用/ dev / zero使用mmap分配一个大内存(40MB),如下所示。 fd = open("/dev/zero", O_RDWR); a = mmap (0, 4096e4, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FILE, fd, 0); 我所理解的是,内核将把内存初始化为零,因为页面被带入物理内存(我认为现代Linux内核使用按需分页 )。 例如,当第一页被触摸并因此被带入物理内存时,内核将其全部4096个字节初始化为零,然后当第二页被触摸时,它将执行相同的操作,等等。 我的理解是正确的吗?

在纯bash中传递一个密码给ssh

我想通过一个bash脚本传递一个密码给ssh (是的,我知道有ssh密钥,我可以使用,但这不是我想要的)。 我发现一些使用expect解决scheme,但由于它不是一个标准的bash工具,我想知道如果我可以使用pipe道来做到这一点。 有人可以向我解释为什么像这样: echo "password\n" | ssh somehost.com 要么 ssh somehost.com <(echo "password\n") 不起作用? 有没有可能使其工作? 也许执行ssh作为一个不同的进程,获得其PID,然后直接发送一个string呢?

从内核分配用户空间内存

我正在打电话 sys_readlink(const char __user *path, char __user *buf, int bufsiz) 直接,但得到EFAULT错误代码。 出现此错误是因为buf指向内核空间的内存。 那么,有没有可能从内核分配用户空间内存? kmalloc(size, GFP_USER)与kmalloc(size, GFP_KERNEL)类似kmalloc(size, GFP_KERNEL)并返回指向内核内存的指针。

pipe道实施

我想实现一个支持pipe道的linux shell。 我已经完成了简单的命令,在后台运行的命令,redirect,但pipe道仍然丢失。 我已经阅读了一些代码片段,但仍然无法理清工作的解决scheme。 我到目前为止: int fd[2]; pipe(fd); pid_t pid = fork(); if (pid == -1) return -1; if (pid == 0) { close(fd[1]); //close write to pipe, in child execlp("cat", "cat", "names.txt", NULL); } else { close(fd[0]); //close read from pipe, in parent execlp("sort", "sort", NULL); } 我是一个新手程序员,正如你可能知道的那样,当我正在编写一些我不太了解的东西时,显然是这样,我喜欢从一些非常简单和具体的东西开始,然后从那里开始构build。 因此,在能够在pipe道中实现三个或更多不同的命令之前,我希望能够计算“ls names.txt | sort”或类似的东西,其中names.txt是一个名称文件无序的文件。 更新的代码,但仍然不起作用。 谢谢。