gpt4 book ai didi

c - 管道输出到 bc 计算器

转载 作者:太空狗 更新时间:2023-10-29 17:11:16 25 4
gpt4 key购买 nike

简短版:

我正在尝试使用管道让这样的东西在 c 中工作:

echo 3+5 | bc

更长的版本:

按照 http://beej.us/guide/bgipc/output/html/multipage/pipes.html 上关于管道的简单说明进行操作,我尝试创建类似于该页面上最后一个示例的内容。准确地说,我尝试使用 2 个进程在 c 中创建管道。子进程将他的输出发送给父进程,父进程使用 bc 计算器使用该输出进行计算。我基本上复制了之前链接页面上的示例,对代码做了一些简单的调整,但它不起作用。

这是我的代码:

#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(void)
{
int pfds[2];
pipe(pfds);

if (!fork()) {
close(1); /* close normal stdout */
dup(pfds[1]); /* make stdout same as pfds[1] */
close(pfds[0]); /* we don't need this */
printf("3+3");
exit(0);
} else {
close(0); /* close normal stdin */
dup(pfds[0]); /* make stdin same as pfds[0] */
close(pfds[1]); /* we don't need this */
execlp("bc", "bc", NULL);
}
return 0;
}

我在运行时收到 (standard_in) 1: syntax error 消息。我也尝试使用读/写,但结果是一样的。

我做错了什么?谢谢!

最佳答案

bc 的输入必须以换行结束。使用

printf("3+3\n");

它会神奇地起作用!顺便说一句,您可以验证这是问题所在

$ printf '3+3' | bc
bc: stdin:1: syntax error: unexpected EOF
$ printf '3+3\n' | bc
6

关于c - 管道输出到 bc 计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com