Articles of pipe理员

docker容器如何比主机操作系统有更多的内存?

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE Image_Name latest d8dcd701981e About an hour ago 6.565 GB 我正试图在我的客户操作系统(ubuntu14.04)中运行这个镜像,这是使用虚拟盒子运行的。 我已经为我的客户操作系统(Ubuntu 14.04)分配了4GB内存,但是当我在客户操作系统中运行我的容器并使用docker stats gigantic_cori检查docker docker stats gigantic_cori它显示内存限制为5.028GB。 这怎么可能?? CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O gigantic_cori 0.02% 4.6 GB / 5.028 GB 2.02% 44.43 MB / 20.51 MB 580.2 MB / 3.196 […]

Linux的所有C程序的加载地址是否通用?

比方说,我有一个prog1.c是build立为prog1.out。 在prog1.out有一个链接器的信息,将告诉哪里将加载精灵。 这些地址将是一个虚拟地址。 装载程序将查找这些信息,并将其作为一个进程启动。 像DS,BSS这样的每个部分都将被加载到链接器中提到的虚拟地址上。 例如,我有prog2.out,也有相同的加载器地址,BSS,DS等,那么它会冲突? 我知道这不会冲突,但会有性能问题。 由于这两个进程具有相同的虚拟地址,但它们映射到不同的物理地址? 我很困惑,它如何保护具有相同虚拟地址的两个进程。

如何懒惰分配归零内存?

根据我的理解,我必须在分配零内存的calloc和可以根据需要分配内存的malloc之间进行select。 是否有一个function,结合这两个属性? 也许直接调用mmap ? 如果可能的话,为什么calloc不行呢?

将pipe道焦油提取成焦油创build

我现在有一个tar.gz,我想从中提取一个或两个文件,并将它们打包/添加到一个新的tar.gz中。 当然,我可以保存到一个临时文件并使用它,但是ABSOLUTE的要求是不需要任何中间文件输出即pipe道。 换句话说,我想要的是像下面的伪代码(显然语法是不正确的) tar -xvf first.tar.gz subdir1/file1 subdir2/file2 | tar cf – | gzip > second.tar.gz 有谁知道这个适当的语法? 我已经尝试了很多变种,但无济于事。 我也很喜欢使用cpio的想法,但是又一次,我被如何正确地获得语法所困扰,并且从我的理解中,cpio只会使用档案或文件名,而不是文件。 任何帮助将不胜感激。 编辑:在压缩包内没有特定的文件名模式来提取。 鉴于BSD和GNU tar一次只能search一个模式,我不确定是否甚至可以分别使用include / exclude标志。

使用istream从命名pipe道读取

是否有可能使用c ++(stl)使用stream从命名pipe道(mkfifo)读取 – 因此不会事先为读取操作定义char *buffer[MAX_SIZE] ? 我想读取,直到缓冲区结束并把结果放入std::string 。 (当前方法: bytes = read(fd, buffer, sizeof(buffer));事先要求分配某种缓冲区。

编写linux shell

我正在学习Unix C并为练习做一些练习。 我目前正在编写我自己的shell,其工作方式类似于linux bash shell。 我下面的代码提供了一个相当基本的shell。 它现在提供I / Oredirect。 我正在尝试添加对pipe道的支持。 最初,我只想添加对单个pipe道的支持。 我试图通过一些在线教程,但不能完全弄清楚从哪里开始。 目前,下面的shell可以处理下面的命令命令。 ls> abc,cat <file1> file2等 #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <string.h> #include <sys/wait.h> #include <fcntl.h> #define TRUE 1 int main(void) { char *arg_list[10]; int status; int counter = 0; int counter2 = 0; pid_t pid; char buf[100]; char inFile[10]; […]

用O_WRONLY挂在open()上的C ++ Linux命名pipe道

这是我简单的代码,打开一个命名pipe道,写一个string,然后closurespipe道。 pipe道是在另一个函数中创build的,如下所述。 char * ipcnm = "./jobqueue"; std::cout << "opening job queue" << std::endl; //ensure the jobqueue is opened if ((jobq = open(ipcnm, O_WRONLY)) < 0) { perror("open"); exit(-1); } std::cout << "queue opened" << std::endl; // record the number of bytes written to the queue size_t written = write(jobq, ptr, size*nmemb); // close fifo […]

如何真正释放Linux中的巨大页面以供新进程使用?

真的找不到这个..希望有人可以帮助。 我正在打造一个100GB的Java堆作为大数据caching。 为了避免与文件系统caching之类的冲突,并且因为它在一般情况下performance更好,我将在大页面中分配它。 我保留了51,200 x 2MB的大页面,一切都很顺利。 然而,当我终止进程然后重新启动时,看起来Linux将这些页面中的一部分留作“rsvd”。 # less /proc/meminfo | grep Hug AnonHugePages: 0 kB HugePages_Total: 52000 HugePages_Free: 50952 HugePages_Rsvd: 1634 HugePages_Surp: 0 Hugepagesize: 2048 kB 据我所知,我没有任何其他系统configuration为请求或保留这些页面。 Linux为我提供了一种方法,让我看看是什么保留了那些保留的和/或使该保留无效的? 从我发现的一切谷歌他们并没有被实际使用,只是Linux保留了他们的储备,但有趣的是不允许我重新启动我的巨大JVM时使用它们。 任何帮助将是伟大的。

Java读生活日志文件

我正在用Java编写一个cod4服务器控制器(我知道那里有完美的服务器控制器,但我想从中学习)。 现在我想根据日志文件中的条目采取具体的操作,这个文件经常被鳕鱼更新,文件会变得很大。 现在我怎样才能有效地读取每一秒左右文件已经改变的部分呢? 或者是否有办法将日志文件中的所有内容都发送给Java?(我读了一些关于pipe道的内容)。 服务器在Linux上运行。 日志文件不需要保存在同一个位置,因为所有的东西都应该通过Java来保存。 大约一秒或2秒的延迟是可以接受的,但不再是。

正确的fork()和pipe()用于具有多个子项的单个父项。 我该如何解决这个问题?

所以,我以前的post被标记为脱离主题,太模糊,并要求有用的代码的意见和build议。 它做了这些事情,所以我重新张贴作为我正在工作的代码的问题。 感谢上一篇文章中的内容,通过回顾你们所说的话,我能够把我在这里所得到的结果分解开来。 这里的重点是父/子关系和使用fork()和pipe()来获得所需的影响。 该项目是一个POSIX纸牌游戏,父母(经销商)从父母手中分出5个孩子(玩家)和自己的pipe道。 父母向玩家发牌(至less5卡),直到一个玩家拥有3个(不丢弃)。 获胜的孩子将获胜的手和EOF(退出(0))传送给父母以宣告胜利。 这会触发父母打印胜出的玩家,并将EOF传送给其余的孩子将其closures(退出(1))。 父母然后closures。 如果父母没有获胜者到达甲板的末端,则将EOF传递给孩子,等待他们退出(1)…然后closures。 我所面临的主要问题是孩子的程序如何分别读取每张卡片,而不是一遍又一遍地从pipe道读取相同的值。 我想我缺less一种方法来同步父母写入pipe道和孩子从pipe道读取。 我对这个家伙是全新的,所以任何帮助都非常感激。 非常感谢。 代码更新:(编译很多问题)完成和编译,但我显然有pipe道和通过它们传递数据的麻烦。 没有玩游戏,没有读取或写入pipe道,离开僵尸进程,这里是错误的。 我很感激任何投入在我的混乱。 大声笑 这是我运行程序(play.c)时的输出: os@debian:~/Documents/cpsc351/projects/assn2$ gcc -o play play.c os@debian:~/Documents/cpsc351/projects/assn2$ ./play Pipe Success…toChild 1 created. Pipe Success…toParent 1 created. Pipe Success…toChild 2 created. Pipe Success…toParent 2 created. Pipe Success…toChild 3 created. Pipe Success…toParent 3 created. Pipe Success…toChild 4 created. Pipe […]