我正在尝试使用FIFO在两个进程之间进行读写,但是当我打开一个FIFO时,它没有打印我给它打印的任何消息,类似地,当我写入它时,它也没有显示任何东西...so,我怎么知道它是否工作呢?为什么它挂在终端上它只是一直接受输入而不结束?请在这里帮助我,我认为代码是正确的,但它是这样的
int main ()
{
int fd;
char buffer[MAX];
char * os;
if(mkfifo("oss",0666)<0)
{
perror("FIFO (named pipe) could not
我有两个进程,一个服务器和一个客户机,应该通过管道(C++,Linux)进行通信。服务器使用O_RDONLY标志打开管道,用O_WRONLY打开客户端。但是,服务器在open函数处阻塞,而客户机似乎成功运行( open函数返回成功,write函数也一样)。
我读过,如果设置了O_NONBLOCK标志,读取函数就会继续,但是如果没有连接到客户端,我不希望它继续--在客户端连接之前阻止是可以的,但在我的示例中,即使在客户端运行完之后,它仍然被阻塞。
请告诉我我做错了什么.?
以下是代码:
// Server side
int pipe;
int status, nr_read = 0;
stat
我正在使用Mac上的boot2docker,用码头映像包装一些科学软件。该软件()使用命名管道(在python代码中,但这并不重要)将不同的部分(用C编写)连接到一起。我从主机Mac机器上安装了临时文件夹,以便在docker容器中提供划痕区域(因为软件的临时输出可能很大),如下所示:
docker run -v /external/folder:/tmp/scratch <image> <args>
它给了我集装箱内的安装线:
none on /tmp/scratch type vboxsf (rw,nodev,relatime)
在这个名为管道创建的挂载文件夹中,当它
我想尝试一下命名管道,所以我下载了一段代码,并对其进行了修改以进行测试:
fifoname = '/home/foo/pipefifo' # must open same name
def child( ):
pipeout = os.open(fifoname, os.O_NONBLOCK|os.O_WRONLY)
# open fifo pipe file as fd
zzz = 0
while 1:
time.sleep(zzz)
os.write(pipeo
在ubuntu 12.04 LTS (64位)上编译makefile时遇到以下错误:
fifo.c: In function ‘OpenPipe’:
fifo.c:28:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’ [-Wformat]
fifo.c:31:16: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
fifo.c:33:17: warning
在网上做了一些搜索,找到了使用命名管道的简单“教程”。然而,当我做任何后台工作时,我似乎丢失了很多数据。
[编辑:找到了一个更简单的解决方案,请参阅回复帖子。因此,我提出的问题现在是学术问题-以防有人可能需要作业服务器]
Ubuntu 10.04与Linux2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux
GNU bash,版本4.1.5(1)-release (x86_64-pc-linux-gnu)。
我的bash函数是:
function jqs
{
pipe=/tmp/__j
为了与shell进行通信,shell只启动一次,并在单独的进程中运行,我使用了Popen from subprocess。
import os
from subprocess import Popen, PIPE
def server():
FIFO_PATH = '/tmp/my_fifo'
FIFO_PATH2 = '/tmp/in_fifo'
if os.path.exists(FIFO_PATH):
os.unlink(FIFO_PATH)
if os.path.exists(FIFO_PATH2):