моя программа предназначена для разветвления процесса, чтения из файла построчно внутри родителя и передачи этих строк по каналу для передачи в bc, который вызывается с помощью execve.
Файл, который я использую, представляет собой текстовый файл, который просто содержит 5 + 10.
Родительский процесс считывает их следующим образом:
while(fgets(newWord, sizeof newWord, coolFile) != NULL)
{
write(stdin_pipe_fds[1], newWord, (strlen(newWord)+1));
}
Ребенок вызывает 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 через канал, исправляет одно сообщение об ошибке (недопустимый символ), но два других остаются. Надеясь, что у кого-то есть идея проблемы может быть!