gpt4 book ai didi

c - fork 过程和使用 execve 调用 bc 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:12 26 4
gpt4 key购买 nike

我的程序旨在 fork 一个进程,从父文件中逐行读取文件并将这些行插入管道以传递给使用 execve 调用的 bc。

我使用的文件是一个仅包含 5 + 10 的文本文件。

父进程像这样读取它们:

while(fgets(newWord, sizeof newWord, coolFile) != NULL)
{
write(stdin_pipe_fds[1], newWord, (strlen(newWord)+1));
}

child 这样叫 bc:

execve("/usr/bin/bc", argv, NULL);

运行程序给我这个错误信息:

 scg3q@system64:~/CS/project4$ (standard_in) 1: syntax error
(standard_in) 1: illegal character: ^@
(standard_in) 1: syntax error

当我尝试执行 bc 时会发生这种情况。有什么想法吗?

编辑:确保空终止符没有通过管道传递给 bc 修复了一个错误消息(非法字符),但其他两个仍然存在。希望有人知道这个问题可能是!

最佳答案

不要将 1 添加到 strlen(newWord)。这导致您将空终止符写入管道,但 bc 不希望其输入中出现空字节。

write(stdin_pipe_fds[1], newWord, (strlen(newWord)));

要修复其他语法错误,请确保 newWord 以换行符结尾,因为 bc 要求其输入是完整的行。

关于c - fork 过程和使用 execve 调用 bc 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56796364/

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