В программе C
мне нужно найти OSTYPE
во время выполнения, на основе которого я сделаю некоторые операции.Определите `OSTYPE` во время выполнения в программе C
Вот код
#include <stdlib.h>
#include <string.h>
int main() {
const char * ostype = getenv("OSTYPE");
if (strcasecmp(ostype, /* insert os name */) == 0) ...
return 0;
}
Но getenv
возвращается NULL
(и есть ошибка сегментации). Когда я делаю echo $OSTYPE
в терминале, он печатает darwin15
. Но когда я делаю env | grep OSTYPE
, ничего не печатается, а это значит, что он не находится в списке переменных окружения. Чтобы он работал на моем локальном компьютере, я могу перейти на .bash_profile
и экспортировать OSTYPE
вручную, но это не решит проблему, если я хочу запустить сгенерированный исполняемый файл на новом компьютере.
Почему OSTYPE
доступен во время работы терминала, но, видимо, нет в списке переменных окружения. Как обойти это?
Да, но это должно быть UNIX, не так ли? https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man3/getenv.3.html – AbKDs
Потому что bash устанавливает его. Нет bash, нет переменной. –
@iharob, если я запускаю исполняемый файл где-то в другом месте, тогда мне нужно знать OSTYPE. – AbKDs