Articles of pipe理员

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是一个名称文件无序的文件。 更新的代码,但仍然不起作用。 谢谢。

为什么ps o / p列出pipe道后的grep进程?

当我做 $ ps -ef | grep cron 我明白了 root 1036 1 0 Jul28 ? 00:00:00 cron abc 21025 14334 0 19:15 pts/2 00:00:00 grep –color=auto cron 我的问题是为什么我看到第二行。 从我的理解, ps列出的进程和pipe道列表grep 。 grep甚至没有开始运行,而ps正在列出进程,那么如何将grep进程列在o / p? 相关第二个问题: 当我做 $ ps -ef | grep [c]ron 我只得到 root 1036 1 0 Jul28 ? 00:00:00 cron 第一次和第二次grep执行有什么区别?

是SIGSEGV交付给每个线程?

我有一个multithreading的Linux程序。 在某些记忆区域,我有兴趣看看它们是否在特定的时间段内被写入。 为此,我只给这些内存页面的读访问权限,并为SIGSEGV安装一个信号处理程序。 现在我的问题是,每个线程会自己调用信号处理程序。 说线程1写入一些禁止的内存区域,它将是一个执行信号处理程序?

内核页面是否被换出?

关于Linux内核,“内核”页面是否被换出? 此外,用户空间页面是否曾经驻留在ZONE_NORMAL?

在Linux中根据模式重命名大量文件

我试图用mv命令做三件事,但不知道这是可能的吗? 可能需要一个脚本。 不知道该怎么写。 所有文件都在同一个文件夹中。 1)以v9.zip结尾的文件应该是.zip(v9被删除) 2)包含_的文件应该是 – 3)小写字母旁边的大写字母(或大写字母旁边的小写字母)的文件之间应该有一个空格。 所以MoveOverNow将被移动到现在和ruNaway将结束[az] [az]或[az] [AZ]成为[AZ] [az]和[az] [AZ]

/ proc / $ pid / maps显示x86_64 linux上没有rwx权限的页面

/proc/$pid/maps显示x86_64 linux上没有rwx权限的页面。 我注意到,当我读取/proc/$pid/maps在64位linux我有内存页面没有权限,但在一个32位的Linux,他们不在那里。 我试图监视我的过程的内存使用情况,但林困惑。 为什么有没有rwx特权的页面。 他们正在消耗我的记忆! 这是一个64位的Linux输出的“顶” % cat /proc/21367/maps 3154200000-315420d000 r-xp 00000000 fd:00 4835776 /lib64/libproc-3.2.7.so <br/> 315420d000-315440d000 **—p** 0000d000 fd:00 4835776 /lib64/libproc-3.2.7.so <br/> 315440d000-315440e000 rw-p 0000d000 fd:00 4835776 /lib64/libproc-3.2.7.so 请指教。

pipe道如何在Linux中工作?

pipe道如何工作? 如果我通过CLI运行一个程序,并将输出redirect到一个文件,我将能够将该文件传送到另一个正在写入的程序中? 基本上,当一行写入文件,我希望它立即pipe道到我的第二个应用程序(我试图dynamic绘制一个现有的程序图)。 只是不确定pipe道是否完成第一个命令,然后再转到下一个命令。 任何反馈将不胜感激!

如何从Linux内核模块中的逻辑地址获取物理地址?

有没有什么合适的方法来获得逻辑的物理地址,除了手工浏览页面目录条目? 我在内核源代码中查找了这个function,发现有一个follow_page函数可以很好地处理内置的巨大和透明的页面支持。 但它不会被导出到内核模块(为什么???)… 所以,我不想发明轮子,我认为手工重新实现follow_pagefunction不是很好。

C中当前进程的内存使用情况

我需要在C中获取当前进程的内存使用情况。有人可以提供一个代码示例,说明如何在Linux平台上执行此操作。 我知道获取内存使用的cat /proc/<your pid>/status方法,但我不知道如何在C中捕获它。 顺便说一句,这是我正在修改的PHP扩展(授予,我是一个C新手)。 如果PHP扩展API中有可用的快捷方式,那将更有帮助。

任何方式来保留但不提交在Linux内存?

Windows有VirtualAlloc,它允许您保留一个连续的地址空间区域,但实际上不使用任何物理内存。 稍后,当您想要使用它(或其中的一部分)时,再次调用VirtualAlloc来提交以前保留页面的区域。 这实际上是非常有用的,但是我最终将我的应用程序移植到了linux–所以如果以后我不能移植它,我不想使用它。 Linux有办法做到这一点? 编辑 – 用例 我想分配4 GB或一些这样的虚拟地址空间,但一次只提交64K。 这会给我一个零拷贝的方式来增长一个高达4 GB的数组。 这是非常重要的,因为典型的数组大小和副本的两倍会为非常大的数组引入看似随机的不可接受的延迟。