Articles of pipe理员

Python匿名pipe道设置超时

我有一种感觉是不可能的。 但有没有办法在Linux上的Python / C中的匿名pipe道设置读取超时? 有比设置和陷印SIGALRM更好的select吗? >>> import os >>> output, input = os.pipe() >>> outputfd = os.fdopen(output, 'r') >>> dir(outputfd) ['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', […]

使用php在linux中写入pipe道

我已经在linux mkfifo /tmp/myFIFO创build了一个pipe道,现在我已经将chmod设置为777 ..然后我有ac应用程序读取pipe道并输出我写入pipe道的内容。 当我这样做在PHP和这个工程.. $command = "echo 'helloworld' > myFIFO"; $process = proc_open($command, $descriptor, $pipes, $cwd, $env); 但是当我用fwrite来做例如 $out = fopen("/tmp/myFIFO","w"); fwrite($out,"hello"); fclose($out); 它根本不起作用。 我没有得到任何输出从我的pipe道在linux?..为什么这个fwrite不工作?..谢谢

Linux,检查有没有当前正在运行的cron作业的代码?

我将如何编写一个bash脚本来检查当前是否有正在运行的cron作业,然后执行一些简单的操作? 我不是在谈论定时运行的cron作业,而是指积极运行的进程。 谢谢!

Linux上使用的malloc版本

我只是看glibc malloc.c文件顶部的注释,它说: 您可能已经默认使用包含malloc的C库 这是基于这个malloc的一些版本(例如在 Linux版)。 您可能仍然想要使用该文件中的一个 自定义设置或避免与库相关的开销 版本。 我不明白为什么glibc代码会说一个版本的Linux可能会使用不同的代码在glibc malloc.c ? 请有人帮忙重新说这是什么意思? 我认为glibc malloc()是每个Linux将用于内存pipe理?

如何使图书馆与Linux打包好?

我是分布在多个Linux打包发行版中的C ++库的作者。 该库包含标题和源代码; Linux软件包将其作为标题+共享库(.so)分发。 我正在寻找能够让Linux软件包维护者的生活更轻松的指导方针。 我感兴趣的东西包括: API兼容性(例如更改function签名)。 显然保持跨小版本的兼容性至关重要。 主要的版本变化呢? 二进制兼容性(例如,改变外部可见数据结构的大小)。 在次要版本中ABI兼容性有多重要? 在主要版本中是否有任何问题? build立版本build议。 我目前正在使用CMake – 我应该设置哪些特定的设置来最大限度地提高包维护者可以使用我的CMakeLists.txt的机会? 如果还有其他东西,我很乐意听到。

Linux进程描述符在哪里存储,什么可以访问?

我读过Linux中的进程描述符(在x86上)存储在内核数据段中,但在PAGE_OFFSET(即在用户地址空间中)的地址中。 由于内核数据段和用户数据段都覆盖了全部4GB的地址空间,因此如果用户代码知道其地址,则可能通过用户数据段访问进程描述符。 这是正确的,如果是的话,这不是一个安全漏洞? 一个相关的问题:有一个断言,进程描述符的线性地址可以作为一个唯一的进程ID。 但是,由于线性地址使用页表进行翻译,并且对于PAGE_OFFSET下的地址的每个进程,页表都不相同,那么两个进程不能将它们的进程描述符存储在相同的线性地址吗?

在dlclose()之后访问由共享库分配的内存

在做了一些研究之后,我最终转向SO来问我的问题:在使用dlclose()closures库之后,由共享库(使用malloc()或new )dynamic分配的内存会发生什么? 我观察到的行为是,任何访问这样的内存(取消引用它,使用delete操作符等)导致分段错误。 它是在什么地方定义的? 现在看起来像一个愚蠢的问题,当我知道调用dlclose()之前,我已经完成了内存是错误的来源 – 通过使用delete操作员从一个共享库收到一个new创build对象触发 – 我有过去几天一直在挣扎,但我想知道为什么,而不是只是猜测,以免我将来遇到类似的情况。

有没有find哪些软件包提供文件的工具?

例如,如果./configure或者Make告诉我我缺lesslibX11.so.6,并且它不在我的系统中,那么是否有一个工具或网站可以input libX11.so.6 然后分配/拱然后回来 libx11-6 libx11-6-debug [或其他; 询问自述文件可能会返回大量的条目] http://sysinf0.klabs.be/在某些发行版和体系结构上做了类似的工作,但似乎没有更多的最新发行版。 此外,他们没有一个文件名的条目,所以你需要谷歌“包名称网站:sysinf0.klabs.be”。 我对Ubuntu最感兴趣,但是也很了解其他发行版的类似工具。

使用Expect通过SSHpipe理机器,但不能完成所有任务

*请不要堆积,并告诉我只使用SSH密钥。 如果它错误地告诉我,这是我正在做的方式,假装我正在尝试远程login。 🙂 * 我正在使用期望脚本在我的控制下通过ssh在一组服务器上运行一些例程命令。 脚本应该在每台机器上运行一组命令(例如svn update〜/ folderx \ r“),我当前的脚本做了我希望它做的所有事情…有时候,有时会在完成之前退出ssh连接最后几个命令。 关于如何使连接保持到所有命令完成的任何想法? 下面的代码成功login,成功运行了前两个命令(ap-get update和其中一个svn更新),然后断开连接。 #!/usr/bin/expect -f spawn ssh username@ipaddress set timeout -1 expect "Are you sure you want to continue connecting" {send "yes\r"; exp_continue} "password:" {send "*******\r"; exp_continue } "username@machine" {send "sudo apt-get update\r"} expect "password" {send "*******\r"; exp_continue} "username@machine" {send "sudo svn update ~/folder1\r"} expect […]

用c ++创buildrwpipe道的最佳方法是什么?

我有一个程序A需要发送命令给程序B的stdin,并且读回这个程序B的输出(用C ++编程,而不是linux) ProgramA – >发送字母A – > ProgramB ProgramA < – B <ProgramB的输出 我实际上有第一部分,发送命令给B,使用popen()。 我知道popen只是一种方式。 那么,使用c ++进行双向的最佳方式是什么?