Tag: posix

在os.system()期间会导致“IOError:错误的文件描述符”?

我正在使用一个科学软件,包括一个调用os.system()的Python脚本,用于运行另一个科学程序。 在subprocess正在运行的时候,Python在某些时候打印出下列内容: close failed in file object destructor: IOError: [Errno 9] Bad file descriptor 我相信这个消息是在os.system()返回的同时打印的。 我现在的问题是: 哪些情况会导致这种types的IOError? 这究竟意味着什么? 这对os.system()调用的subprocess意味着什么?

open(2)中的O_SYNC和O_DIRECT标志是不同的/相似的?

O_SYNC和O_DIRECT标志的使用和效果非常混乱,并且在各个平台之间似乎有所不同。 从Linux手册页(请参阅此处的示例),O_DIRECT提供了同步I / O,最大限度地减less了caching效应,并且需要您自己处理块大小alignment。 O_SYNC只保证同步I / O。 尽pipe两者都保证数据写入硬盘caching,但我相信直接I / O操作应该比简单的同步I / O更快,因为它们绕过了页面caching(虽然FreeBSD的open(2)手册页声明当使用O_SYNC时,高速caching被旁路,见这里 )。 O_DIRECT和O_SYNC标志之间的区别究竟是什么? 一些实现build议使用O_SYNC | O_DIRECT。 为什么?

为什么GCC-Windows依赖于cygwin?

我不是一个C ++开发人员,但是我一直对编译器感兴趣,而且我有兴趣修改一些GCC(特别是LLVM)的东西。 在Windows上,GCC需要一个POSIX仿真层(cygwin或MinGW)才能正常运行。 这是为什么? 我用了许多其他的软件,用C ++编写,并针对不同的平台(Subversion,Firefox,Apache,MySQL)进行交叉编译,它们都不需要cygwin或MinGW。 我对C ++最佳实践编程的理解是,您可以编写合理的平台中立代码,并处理编译过程中的所有差异。 那么GCC的协议是什么? 为什么不能在Windows上本地运行? 编辑: 好,这两个答复到目前为止说,基本上,“GCC使用posix层,因为它使用posix标题”。 但是这并不能真正回答这个问题。 比方说,我已经有一套我最喜欢的标准库的标题。 为什么我仍然需要posix头文件? GCC是否需要cygwin / mingw才能真正运行 ? 或者它只需要头和库的仿真层? 如果是这样,为什么我不能给它一个具有所需资源的“lib”目录? 再次编辑: 好吧,我会再次尝试澄清问题… 我也用D编程语言编写代码。 官方编译器被命名为“dmd”,Windows和Linux都有官方的编译器二进制文件。 Windows版本不需要任何种类的POSIX仿真。 而Linux版本不需要任何forms的Win32仿真。 如果编译器对其环境做出假设,它就会很好地隐藏这些假设。 当然,我必须告诉编译器在哪里find标准库以及在哪里find静态或dynamic链接的库。 相比之下,海湾合作委员会坚持假装它是在一个POSIX环境中运作的,并要求我通过build立一个仿真层来幽默这些假设。 但是,GCC内部依赖于这一层呢? 它只是寻找stdlib头,它假定它会在“/ usr / lib”中find这些头? 如果是这样的话,我不应该只是告诉它在“C:/ gcc / lib”中查找这些头文件吗? 还是GCC本身依靠POSIX库来访问文件系统(以及做其他低级的东西)? 如果是这样的话,那么我想知道他们为什么不只是静静地链接到他们最喜欢的windows POSIX库。 为什么要求用户设置依赖关系,何时才能将这些依赖关系直接构build到应用程序中?

Linux共享内存:shmget()vs mmap()?

在这个线程中,OPbuild议使用mmap()而不是shmget()来获得Linux中的共享内存。 我访问了这个页面和这个页面来获取一些文档,但是第二个文档给出了关于mmap()一个模糊的例子。 作为一个新手,并且需要在两个进程之间共享一些信息(文本forms),我应该使用shmget()方法还是使用mmap() ? 为什么? 谢谢, 短发

将datetime转换为POSIX时间

如何将date时间或date对象转换为Python中的POSIX时间戳? 有一些方法可以从时间戳中创build一个date时间对象,但是我似乎没有find任何明显的方式来完成相反的操作。

Ruby中的文件打开模式

我是Ruby中的新程序员。 有人可以举一个关于在Ruby中使用r +,w +,a +模式打开文件的例子吗? 他们和r,w,a有什么区别? 请解释一下,并举例说明。

获取最高分配的文件描述符

是否有一种可移植的方式(POSIX)来获取当前进程的最高分配的文件描述符号? 例如,我知道有一个很好的方式来获取AIX上的数字,但是我正在寻找一种可移植的方法。 我问的原因是我想closures所有打开的文件描述符。 我的程序是一个以root身份运行的服务器,为非root用户分配和执行子程序。 在subprocess中保留打开特权文件描述符是一个安全问题。 有些文件描述符可能是由我无法控制的代码(C库,第三方库等)打开的,所以我也不能依靠FD_CLOEXEC 。

什么是一些有趣的C / C + +库来玩?

我正在寻找一些新的库和C和C ++。 在过去的大部分时间里,我“偶然地”偶然发现了一些 – 其中大部分在我所从事的项目中发现很好。 图书馆应该运行在Mac OS X和Linux / POSIX上,并可能在Windows上运行。 Lua – 用于configuration文件和基本应用程序脚本的最小且快速的脚本引擎。 V8 – 类似于WebKit的JavaScriptCore的Google引擎的快速JavaScript。 开罗 – 一个很好的graphics库,类似于Mac OS X上的QuickDraw / Quartz。 ZBar – 条形码扫描仪库,允许扫描条形码的照片/图像/videostream并返回其价值。 ZLib – 一个非常紧凑的数据stream压缩库。 也使用zziblib和minizip。 DynaPDF – 一个易于使用的PDF生成库。 libusb – 一个通用的USB库,允许便携式访问USB设备(我用它来写一个自定义POS打印机的基本驱动程序)。 WebKit – 如果您想渲染HTML / Web内容并在应用程序中使用它,以便为用户提供“更丰富”的用户体验,那么这是非常好的select。 Qt4 – 各种桌面(也可能是移动)开发的通用框架。 花了我很多的时间 – 不知道我怎么能忘记。 ;) 这应该是标记的社区维基。 请更新,如果你有什么有趣的补充! 谢谢! 更新1 我不是在寻找像Boost或STL这样的“生产力”库。 相反,我正在寻找随机types的“有趣的新东西” – […]

杀死给定用户的所有进程

有没有可靠的方法来杀死给定用户的所有进程? kill(-1, SIGKILL) ,除非该用户的stream氓进程先杀死该进程。 到目前为止,我所能find的最好的方式是循环访问该用户的system("ps -u") ,并以这种方式杀死进程,但这看起来真的很诡异且效率低下。 编辑:澄清,我特别要求一个POSIX兼容的解决scheme。 出于某种原因,我认为标记posix的问题会把它放在标题中。

我的inode在哪里被使用?

如何找出哪些目录负责咀嚼所有的inode? 最终根目录将负责最大数量的inode,所以我不知道我想要什么样的答案.. 基本上,我用完inode并需要find一个不需要的目录来剔除。 谢谢,抱歉,这个模糊的问题。