Articles of pipe理员

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

为什么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道是否完成第一个命令,然后再转到下一个命令。 任何反馈将不胜感激!