草庐IT

posix_spawnp

全部标签

c++ - 为什么 boost::filesystem::path::string() 在 Windows 上按值返回,而在 POSIX 上按引用返回?

来自boost/filesystem/path.hpp:#ifdefBOOST_WINDOWS_APIconststd::stringstring()const{[...]}#else//BOOST_POSIX_API//string_typeisstd::string,sothereisnoconversionconststd::string&string()const{returnm_pathname;}[...]#endif对于wstring()来说恰恰相反——在Windows上通过引用返回,在POSIX上通过值返回。这有什么有趣的原因吗? 最佳答案

c++ - fallocate 与 posix_fallocate

我正在讨论在posix_fallocate和fallocate之间使用哪个函数。posix_fallocate立即写入文件(将字符初始化为NULL)。但是,fallocate不会更改文件大小(使用FALLOC_FL_KEEP_SIZE标志时)。根据我的实验,fallocate似乎不会将NULL或零字符写入文件。有人可以根据您的经验发表评论吗?感谢您的宝贵时间。 最佳答案 文件占用的存储空间超过其显示长度的情况并不常见,因此除非您有充分的理由这样做(例如,您想使用文件长度来跟踪下载了多长时间,因为恢复它的目的),最好使用默认的fall

c++ - unix 时间戳到 boost::posix_time::ptime

我需要将自纪元以来的秒数转换为ptime。我很确定一定有一种简单的方法可以做到这一点,但我找不到任何东西。谢谢。编辑:原来的时间戳是float。我无法更改它,也不想失去亚秒级精度。 最佳答案 使用from_time_t()转换功能。time_t是UNIX时间戳,即自纪元以来的秒数。 关于c++-unix时间戳到boost::posix_time::ptime,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - POSIX/UNIX : How to reliably close a file descriptor

问题:在以EINTR或EIO失败的close()系统调用之后,不确定文件是否已关闭。(http://pubs.opengroup.org/onlinepubs/9699919799/)在多线程应用中,重试关闭可能会关闭其他线程打开的不相关文件。不重试关闭可能会导致无法使用的打开文件描述符堆积起来。一个干净的解决方案可能涉及在新关闭的文件描述符上调用fstat()和一个相当复杂的锁定机制。此外,使用单个互斥锁序列化所有打开/关闭/接受/...调用可能是一种选择。这些解决方案没有考虑到库函数可能会以不可控的方式自行打开和关闭文件,例如,std::thread::hardware_concu

c++ - 我是否需要一个 extern "C" block 来包含标准 POSIX C header ?

我是否需要extern"C"{}block来在C++程序中包含标准Cheader。只考虑在C++中没有对应物的标准C头文件。例如:extern"C"{#include#include} 最佳答案 系统C头文件通常已经包含一个extern"C"block,由#ifdef__cplusplus保护。这样,函数在编译为C++时会自动声明为extern"C",您无需手动执行此操作。例如在我的系统上unistd.h和fcntl.h以__BEGIN_DECLS开始并以__END_DECLS结束,它们是在sys/cdefs.h中定义的宏:/*C+

c - GNU C 库是否可用于非 GNU(或 POSIX)平台?

只是想知道,GNUC库(glibc)是否可以在非GNU和/或非POSIX平台(例如MicrosoftWindows)上使用? 最佳答案 是的,这在理论上是可行的,但在实践中并不值得。您需要将系统调用接口(interface)、动态链接器和其他部分移植到Windows或您选择的平台,而Glibc不是理想的选择。如果你真的需要一个独立的C库,我会考虑newlib或uClibc(或FreeBSD/OpenBSD的libc)在glibc之上。Glibc是一个复杂的野兽,替代品要小得多,也更容易理解。

c++ - 关于 Windows 和 posix 中的 1 个刻度

我在Windows下看到C++代码。有人提到,1刻度等于100纳秒。这是特定于Windows的吗?或者这是任何通用标准,如果它是标准的名称是什么?这在其他操作系统上也一样吗?提出上述问题的原因我必须编写与平台无关的代码,如果它是特定于Windows的,我必须为这部分代码添加#ifdefWIN32。 最佳答案 这是微软特有的:lookhereThesmallestunitoftimeisthetick,whichisequalto100nanoseconds.Atickcanbenegativeorpositive.在Linux系统中

windows - Microsoft Windows 的 7 POSIX 实现目前处于什么位置?

Windows7中/适用于Windows7的完整POSIX实现是否可用(我正在考虑适用于UNIX的Windows服务)?它是否适用于每个版本的操作系统(似乎没有)?它如何添加/改进或破坏以前的MSWindowsPOSIX实现?我在哪里可以找到有关Windows7中POSIX合规性的特定Microsoft方法和实现的更多信息? 最佳答案 SUA,以前称为INTERIX,现在100%POSIX兼容。有很多移植的应用程序。甚至像Debian这样的整个Linux发行版都被移植了。SUA/Interix随Windows2003R2及更高版本(

Windows PATH 到 bash 中的 posix 路径转换

如何将Windows目录路径(例如c:/libs/Qt-static)转换为正确的POSIX目录路径(/c/libs/Qt-static)通过标准msys功能?反之亦然? 最佳答案 Cygwin、GitBash和MSYS2有一个名为cygpath.exe的现成实用程序,专门用于执行此操作。Outputtypeoptions:-d,--dosprintDOS(short)formofNAMEs(C:\PROGRA~1\)-m,--mixedlike--windows,butwithregularslashes(C:/WINNT)-M,

POSIX线程:最佳中断方法

我被告知开始使用Pthreads时的第一件事是-您应该避免使用pthread_cancel的强制线取消。相反,我们应该通过线程通信通道使用线程取消通知。如果我们在线程中运行的任务非常长,我们将此任务分为小块,并在每个块处理后检查取消标志。像这样:loop{process_chunk();if(check_cancel_flag())break;}但是,该check_cancel_flag()函数实现的最佳方法是什么?有了我在C和Linux方面的所有经验,我只能记住这些方法:(如果您只有一个工作线程)可以将SIG_ATOMIC_T用作取消标志的类型。在check_cancel_flag()函数中