Protože výstup bude stderr
musíte přesměrovat stderr
takhle:
FILE* file = popen("ntpdate 2>&1", "r");
toto přesměruje stderr
až stdout
a tak uvidíte výstup z obou. Druhé vydání fscanf
se zastaví na první mezerě, takže můžete nahradit fgets
:
fgets(buffer, 100, file);
Jak Shafik Yaghmour správně diagnostikoval, výstup vidíte z ntpdate
je zapsán (správně) do své standardní chyby, která je stejná jako standardní chyba vašich programů.
Chcete-li, aby se chybové zprávy odeslaly, použijte:
FILE *file = popen("ntpdate 2>&1", "r");
To odešle standardní chybový výstup z ntpdate
na standardní výstup příkazu, což je roura, ze které čtete.
Samozřejmě to vypadá na použití ntpdate
nebude fungovat dobře, dokud něco nenakonfigurujete.
Při použití data příkazu linux přidejte určitý čas
Nastavení/změna atributu ctime nebo Change time u souboru