Здравствуйте.
Я уже задавал подобный вопрос, ответ на него вроде бы прост:
#include <stdio.h>
int main()
{
FILE *in;
char buff[512];
if(!(in = popen("df -h", "r")))
{
printf("xana");
}
while(fgets(buff, sizeof(buff), in)!=NULL)
{
printf("RECIV:%s", buff);
}
pclose(in);
return 0;
}
Получаю всё как положено.
RECIV:Файл.система Размер Использовано Дост Использовано% Cмонтировано в
RECIV:udev 3,9G 4,0K 3,9G 1% /dev
RECIV:tmpfs 799M 1,4M 798M 1% /run
RECIV:/dev/sdb1 143G 105G 31G 78% /
RECIV:none 4,0K 0 4,0K 0% /sys/fs/cgroup
RECIV:none 5,0M 0 5,0M 0% /run/lock
RECIV:none 3,9G 28M 3,9G 1% /run/shm
RECIV:none 100M 52K 100M 1% /run/user
Программа которую я планирую запускать (это майнер EWBF) подключается к пулу (передавая ему пароль) и начинает майнить.
Дык вот в чём дело: если запустить майнер с НЕ правильным паролем, то он выдаёт сообщение об ошибке, а моя программа ловит его и завершает работу.
RECIV:+-------------------------------------------------+
RECIV:| EWBF's Zcash CUDA miner. 0.3.4b |
RECIV:+-------------------------------------------------+
RECIV:INFO: Current pool: zec.suprnova.cc:2142
RECIV:INFO: Selected pools: 1
RECIV:INFO: Solver: Auto.
RECIV:INFO: Devices: All.
RECIV:INFO: Temperature limit: 90
RECIV:INFO: Api: Disabled
RECIV:---------------------------------------------------
RECIV:INFO: Target: 003c3c3c3c3c3c3c...
RECIV:INFO: Detected new work: 4902
RECIV:ERROR: Stratum authorization error
Если же запустить с правильными данными, то моя программа ничего не ловит, как будто майнер ничего не выдаёт (а он выдаёт).
То есть (как я думаю) когда майнер запускается с правильными данными, то внутри что-то форкается и инфа выдаётся неизвестно куда. (другого объяснения я не занаю)
Такое может быть? Или почему вобще так происходит?
П.С. Извиняюсь за формулировку вопроса и заранее спасибо.