草庐IT

POSIX_VISIBLE

全部标签

linux - 有没有办法在 posix shell 或 bash 中扇出流?

这个问题在这里已经有了答案:HowcanIsendthestdoutofoneprocesstomultipleprocessesusing(preferablyunnamed)pipesinUnix(orWindows)?(6个答案)关闭5年前。我想要这样的东西:cata>bprog1无需创建临时b文件。如果我只有一个程序,我可以使用管道:cata|prog1我想知道shell是否有支持类似这样的语法:cata(|prog1)(|prog2)或者是否有方便的实用程序可以提供帮助?像这样的东西:cata|fanoutprog1prog2

c++ - 我们可以在 C++ 中使用 POSIX C 库吗?

我是Linux系统编程领域的新手。我目前使用C编程,想切换到C++。我们能否在C++中使用POSIXC库中定义的所有函数而无需任何更改? 最佳答案 原则上您应该能够使用来自C++的任何CAPI;该语言包含促进它的功能,并且大多数C库作者都知道人们想要这样做并将采取适当的步骤。对于POSIX指定的系统编程接口(interface),C++兼容性是一个明确的设计目标。但是,您可能仍然会遇到问题。根据我的经验,最常见的问题是:CAPIheader通常会将数百个符号转储到全局namespace中。其中一些符号可能与C++库符号冲突,如果您使

regex - 为什么 POSIX "printable characters"类不匹配简单字符串?

我编写了以下脚本来测试“可打印字符”字符类,如here所述.#!/bin/shcase"foo"in*[:print:]*)echo"foundaprintablecharacter";;*)echo"foundnoprintablecharacters";;esac我希望这个脚本输出foundaprintablecharacter,"foo"中至少有一个(事实上,所有)字符是可打印的。相反,它输出"foundnoprintablecharacters"。为什么"foo"中的字符未被识别为可打印字符? 最佳答案 字符串[:只是一个特

linux - 如何在 POSIX 中实现零拷贝机制?

我想在本地/网络的两个进程之间共享/传输数据。通用IPC机制共享内存和消息队列可用于传输数据。但这些机制涉及多个副本。我遇到了零复制机制,它减少了复制开销在CPU上。Linux支持使用sendfile和splice。这些API不在POSIX中。如何仅使用POSIXAPI实现零复制? 最佳答案 如果将共享数据保存在共享内存中,则两个进程之间的共享内存是零拷贝。否则必须在某处有一个副本(例如进出共享内存)。如果其中一个进程将共享数据保存在共享内存中,而另一个进程只是从那里读取它,则可以将其减少为一个副本。sendfile(2)和vmsp

c++ - 使用 posix_spawn 启动进程

我正在使用以下代码在Linux中启动新进程pid_tprocessID;char*argV[]={"192.168.1.40",(char*)0};intstatus=-1;status=posix_spawn(&processID,"/home/user/application",NULL,NULL,argV,environ);if(status==0)std::cout应用程序确实启动但没有命令行参数。posix_spawn参数有什么错误? 最佳答案 来自posix_spawn手册页:Theargumentargvisapoin

c++ - 调用 posix_spawn 时关闭所有文件句柄

我想使用posix_spawn(...)(或非常类似的东西)生成一组进程。此函数接受类型为posix_spawn_file_actions_t的参数,它允许我指定应如何处理打开的文件句柄。从我可以确定的thedocumentation,所有文件都是从调用进程继承并根据posix_spawn_file_actions_t结构中的信息修改的。我希望生成的进程未打开所有文件(stdin、stdout和stderr除外)。有谁知道如何做到这一点?显然,这可以在某些实现中使用“POSIX_SPAWN_CLOEXEC_DEFAULT”生成属性标志来完成,但这在我的平台上不可用。我也可以使用fcnt

c - 在 Linux 上实现 posix_spawn

我很好奇是否可以实现posix_spawn在Linux中使用vfork+exec的组合。以一种非常简化的方式(省略大多数可选参数),这看起来或多或少像这样:intmy_posix_spawn(pid_t*ppid,char**argv,char**env){pid_tpid;pid=vfork();if(pid==-1)returnerrno;if(pid==0){/*Child*/execve(argv[0],argv,env);/*Ifwegothere,execvefailed.Howtocommunicatethisto*theparent?*/_exit(-1);}/*Par

c - 为什么在 POSIX 中创建消息队列时出现错误 "Cannot Allocate Memory"?

为什么在POSIX中创建消息队列时出现“无法分配内存”错误? 最佳答案 Adrian的回答是正确的,但由于这是一个令人沮丧的常见错误,当第一次尝试将POSIX消息队列用于任何非平凡的事情时,在Linux上会遇到这个错误,我想我应该添加一些有用的细节。首先,要了解RLIMIT_MSGQUEUE资源限制,请参阅mansetrlimit中的公式:RLIMIT_MSGQUEUE(SinceLinux2.6.8)SpecifiesthelimitonthenumberofbytesthatcanbeallocatedforPOSIXmessa

Linux 新手 : Linux vs POSIX manual

$aproposmkfifomkfifo(1)-makeFIFOs(namedpipes)mkfifo(1posix)-makeFIFOspecialfilesmkfifo(3)-makeaFIFOspecialfile(anamedpipe)mkfifo(3posix)-makeaFIFOspecialfilemkfifoat(3)-makeaFIFO(namedpipe)relativetoadirectoryfile...所以我有Linux程序员手册和POSIX程序员手册的手册页。我应该更喜欢哪个?为什么?(我正在编写一个Linux应用程序,不打算将它移植到AIX、BSD等)谢谢

linux - 在 Linux 上使用 POSIX AIO 库编译 C++ 程序

在Linux上编译使用POSIXaio库(例如aio_read()、aio_write()等)的示例程序时,我在使用链接器时遇到困难。我正在使用2.6内核运行Ubuntu,并使用apt-get实用程序安装libaio。但是即使我正在链接aio库,编译器仍然给我链接器错误。root@ubuntu:/home#g++-L/usr/lib/libaio.aaio.cc-oaio/tmp/cc5OE58r.o:Infunction`main':aio.cc:(.text+0x156):undefinedreferenceto`aio_read'aio.cc:(.text+0x17b):unde