【发布时间】:2012-09-19 02:28:01
【问题描述】:
鉴于double temp = 6.5;,我如何将其传递给UNIX write() 系统调用:
write(fd[1], (WTF?), 100)
-
fd[1]是一个文件描述符。 -
100是一个固定的缓冲区大小,用于处理大量数值,以防万一。
我在中间放什么?我尝试了 itoa、&temp、*temp、(char) temp 和其他一些方法用谷歌搜索不同的解决方案,但到目前为止还没有运气。老实说,我什至不知道 const void * 是什么类型。我只知道如果我将诸如“Hello World”之类的字符串直接传递给第二个参数,它将停止抱怨。
【问题讨论】:
-
你想
write是double或其字节的十进制表示吗?在后一种情况下,write(fd[1], &temp, sizeof temp);,在前一种情况下,sprintf它是一个char str[100]和write(fd[1], str, strlen(str));。 -
@DanielFischer 我想要一个子进程向我发送 temp 的值,这样我就可以在父进程中进行一些计算。我知道如何从 char 数组到 double,但不是相反。如果我可以通过 write 直接发送 double,那就太好了,否则 char 数组也可以工作,因为我可以在主进程中将其转换回十进制。
-
然后使用
write(fd[1], &temp, sizeof temp);发送更少的字节并且没有丢失精度的风险。 -
@DanielFischer 谢谢,非常感谢。 sprintf 方法至少有效。我现在试试 &temp 方法。