У меня есть этот фрагмент кода C, который выполняется на компьютере с операционной системой coreOS:
char db[512];
snprintf(db, 512, "%s %s", <some command>, <args of the command>);
FILE* pipe = popen(db, "r");
if (!pipe) {
return NULL;
}
char buf[256];
while (fgets(buf, sizeof(buf), pipe) != NULL) {
<DEBUG POINT 1>
<some code utilising buf>
}
<DEBUG POINT 2>
Теперь команда, которая выполняется и которая передается в канал, в конце концов вызывает код Python, который возвращаетНет (Null) с данным аргументом.Проблема, с которой я сталкиваюсь, заключается в том, что fgets не может обработать ответ, и программа вылетает, когда она пытается выполнить fgets () в Pipe.Я имею в виду, что при достижении while () моя программа завершает работу и не может достичь ни точки отладки 1, ни 2. Я пытался найти возможные решения, но не смог ничего найти.
Еще один интересныйДело в том, что когда я запускаю один и тот же код на машине Amazon Linux, он работает нормально, и я получаю желаемое поведение.
Может кто-нибудь, пожалуйста, направьте меня в правильном направлении.