Articles of pipe理员

没有结果!! 使用fork()以2个pipe道使用dup2运行execlp()

我正在编写一个运行Linux命令的C程序,例如: cat /etc/passwd | grep list | cut -c 1-5 我没有任何结果 *这里父母等待第一个孩子(child_pid)完成; 和第一个孩子等待第二(pfils)! 任何想法? 代码: main() { pid_t child_pid; int fd[2]; int pfd[2]; pipe(pfd); child_pid = fork (); if (child_pid != 0) { wait(child_pid); close(pfd[1]); dup2(pfd[0],0); close(pfd[0]); execlp("cut","cut","-c","1-5",NULL); } else { pid_t pfils = fork(); pipe(fd); if(pfils == 0) { close(fd[0]); dup2(fd[1],1); close(fd[1]); execlp("cat", "cat","/etc/passwd",NULL); […]

pipe道命令一起

我需要一起input2个命令,第一个命令将input​​文件中的XYZreplace为“,”,然后我需要做另一个replace。 尝试以下失败。 tr 'XYZ' ',' <input_file | xargs tr ',' '' 第二个命令期望从文件input的时候,将两个命令连接在一起的正确方法是什么?

Linux不允许我访问一个固定的内存区域

我有一些数据存储在FLASH内存中,我需要访问C指针才能使非Linuxgraphics驱动程序工作(我认为这是DMA相关的要求,不知道)。 调用read可行,但我不希望在FLASH和非Linux驱动程序之间有中间RAM缓冲区。 然而,只是创build一个指针并存储我想要的地址就是让Linux发出一个关于我的无效访问的exception。 void *ptr = 0xdeadbeef; int a = *ptr; // invalid access! 我在这里错过了什么? 有人能指点我一个材料来使这个概念清楚吗? 我正在阅读有关mmap,但我不确定这是我所需要的。

C服务器应用程序中的内存pipe理

我是学生,我用C编写HTTP代理应用程序。我在内存pipe理上遇到了麻烦。 在我以前的所有应用程序中,我简单地写了一个malloc的封装,当malloc失败时会中止。 void *xmalloc(size_t size) { void *ptr; assert(size); ptr = malloc(size); if (!ptr) abort(); return ptr; } 这个我现在觉得不足够,因为我只是想拒绝客户端,并在内存分配由于内存暂时不足而导致内存分配失败时继续为其他客户端服务。 如果我不想在每个malloc调用(每个函数在parsing代码中都有很多它们)的情况下使用检查来混淆我的代码,那么还有什么其他选项可以处理内存pipe理,哪一个最适合我的目的?是服务器应用程序处理内存pipe理和内存不足的常用方法? 考虑这个函数从我的当前代码parsingHTTP消息(xstrndup调用xmalloc)的头部分的一行: int http_header_parse(http_hdr_table *t, const char *s) { const char *p; const char *b; char *tmp_name; char *tmp_value; int ret = -1; assert(t); assert(s); p = b = s; /* field name */ for (; […]

mprotect()作为ASM系统调用的用法与第三个参数有什么不同?

在i386体系结构Linux中,我知道你可以通过将系统调用的身份加载到EAX中,并将参数加载到EBX,ECX等中来构build系统调用。 在这种情况下,我对mprotect的第三个参数会是什么样子感到困惑。 假设我想在二进制分配的内存可执行文件中创build内存段,那么PROT_EXEC参数(arg 3)的编码是如何工作的? 我知道前两个参数是(1)指向分配块的开始的指针,(2)在ASM中相对容易概念化的分配块的长度(因为它们是内存中的hex地址) 。 在Linux上,如何将mprotect()的第三个参数格式化为i386汇编中的中断系统调用? 谢谢。

Linux后缀configuration和主机名FQDN

我正在尝试使用https://library.linode.com/email/postfix/postfix2.9.6-dovecot2.0.19-mysql#sph_prerequisites中的教程来设置邮件服务器的后缀和dovecot 我遵循每一个步骤,也打开了防火墙的每个邮件端口,但是当我尝试设置我的电子邮件客户端连接IMAP或POP3它只是无法build立连接。 看来我可以发送电子邮件到我的域名使用我的私人邮箱。 无论如何,我的日志/var/log/mail.log是空的。 我想这与设置主机名(FQDN)和后缀configuration有关。 但是我对主机名和FQDN有点困惑。在我的linode的DNSpipe理器中,我添加了我的域,在这个例子中是:mydomain.com 在mydomain.com里面我有这个: MX record mail.mydomain.com A/AAAA Records 120.120.120.120 www 120.120.120.120 mail 120.120.120.120 donald 120.120.120.120 唐纳德是FQDN,我通过教程 现在在我的linux服务器上,我有几件事情: /etc/hosts 127.0.0.1 localhost 127.0.1.1 ubuntu 120.120.120.120 donald.mydomain.com donald 和 /etc/mailname donald.mydomain.com 后缀configuration /etc/postfix/main.cf …. myhostname = mail.mydomain.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = localhost relayhost = mynetworks = 127.0.0.0/8 […]

文本匹配后将pipe道过程延迟到背景

所以我有一个bash命令来启动一个服务器,并输出一些行之前,它输出的东西,如“服务器启动,按Ctrl + C退出”。 我如何pipe这个输出,所以当这行发生我把这个过程在后台,并继续与另一个脚本/function(即做的东西,需要等到服务器启动,如运行testing) 我想结束三个function START_SERVER run_tests STOP_SERVER 我有以下几点: function read_server_output{ while read data; do printf "$data" if [[ $data == "Server started, Press Control+C to exit" ]]; then # do something here to put server process in the background # so I can run another function fi done } function start_server{ # start the […]

为什么在反汇编代码中有一些“无意义的”内存插槽?

我使用objdump来反汇编32位Linux上的一些ELF文件。 asm文件是英特尔格式。 在反汇编文件中,我注意到像下面的一些内存插槽: 80483ed: c7 44 24 18 07 00 00 mov DWORD PTR [esp+0x18],0x7 80483f4: 00 80483f5: c7 44 24 1c 0c 00 00 mov DWORD PTR [esp+0x1c],0xc 80483fc: 00 80483fd: c7 44 24 20 01 00 00 mov DWORD PTR [esp+0x20],0x1 8048404: 00 8048405: c7 44 24 24 fe ff ff mov DWORD […]

Netty的零拷贝是不同于操作系统级的零拷贝的吗?

我发现Netty 文档说他们在内置的ByteBuffer有“透明零拷贝”function。 但是在阅读之后,我注意到它没有提到任何内核空间和用户空间切换,只是重用缓冲区。 所以我想知道Netty的“零拷贝”function与操作系统级别“零拷贝”有什么不同(这意味着减less从用户空间内存到内核空间内存的拷贝)?

强制内存分配总是到相同的虚拟地址

我正在试验Pin ,一个测量工具,我使用它来根据variables的内存地址计算一些统计数据。 我想用我的工具工具收集的信息重新运行我的程序,但是至关重要的是虚拟内存地址通过不同的运行保持不变。 一般来说,我应该让操作系统处理内存分配,但在这种情况下,我需要某种方式来强制它始终分配到相同的虚拟地址。 特别是,我感兴趣的是一个非常长的数组,我正在用numa_alloc_onnode()分配,尽pipe我可以使用其他的东西。 什么才是正确的方法呢? 谢谢