繁体   English   中英

如何在两个进程之间发送带管道的整数!

[英]How to send integer with pipe between two processes!

我试图在POSIX系统中发送带管道的整数,但write()函数用于发送字符串或字符数据。 有没有办法用管道发送整数?

问候

安全的方法是使用snprintfstrtol

但如果你知道这两个过程是使用编译器的相同版本创建的(例如,他们是这同一个可执行fork ED),你可以采取这样的事实,在C什么都可以读取或写入阵列优势char

int n = something();
write(pipe_w, &n, sizeof(n));

int n;
read(pipe_r, &n, sizeof(n));

任一发送包含的整数例如,ASCII码表示形式的字符串12345679 ,或发送包含INT的二进制表示,例如,四个字节0x000xbc0x610x4f

在第一种情况下,您将使用诸如atoi()类的函数来获取整数。

Aschelpler的答案是正确的,但如果这可以在以后增长,我建议您使用某种简单的协议库,如Google的Protocol Buffers,或只使用JSON或XML和一些基本架构。

下面一个适用于写入管道和从管道读取:

stop_daemon =123;
res = write(cli_pipe_fd_wr, &stop_daemon, sizeof(stop_daemon));
....
res = read(pipe_fd_rd, buffer, sizeof(int));
memcpy(&stop_daemon,buffer,sizeof(int));
printf("CLI process read from res:%d status:%d\n", res, stop_daemon);

输出:

CLI process read from res:4 status:123

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM