Здравствуйте.
Есть некая программа, неважно что она делает (в крестики-нолики сама с собой играет). В ней есть отдельный поток, задача которого, запускать скрипт «pinre.sh» и считывать результат работы этого скрипта:
#!/bin/sh
BCM0=`cat /home/dima/test.txt`
BCM1=`cat /home/dima/test2.txt`
BCM2=`cat /home/dima/test3.txt`
S2="$BCM0 $BCM1 $BCM2"
echo "$S2"
exit 0
Скрипт опрашивает три файла (test*.txt), собирает результат в строку и делает echo «$S2», тоесть выплёвывает строку «bla1 bla2 bla3».
Вот поток, который запускает скрипт и ловит ответ:
...
void * thr_fnc()
{
for(;;)
{
sleep(1);
FILE * read_pins;
char in_data[16];
read_pins = popen("pinre.sh", "r");
int lastchar = fread(in_data, 1, 15, read_pins);
in_data[lastchar] = '\0';
printf("Data:%s", in_data);
pclose(read_pins);
}
return 0;
}
...
Вопрос заключается вот в чём: что из себя в данном случае представляет FILE * read_pins;, это какой-то файл, который создаётся на диске или область в памяти выделяется? Или это ещё что-то?
Перемещено leave из general