Как изменить выходные данные часового пояса (TZ = UTC) в функции execl (). - PullRequest
0 голосов
/ 29 мая 2018

Я использую один бинарный файл, например.'ls -la' в моем коде c с функцией execl () и чтением возвращает статус дочернего процесса. execl ("/ bin / ls", "ls", "-la", NULL); и получение дочернего статуса с помощью waitpid (pid, & status, 0); функцией.Но мне нужен мой выход в другой часовой пояс, как TZ = UTC .Так что нравится использовать 'ls -la' как 'TZ = UTC ls -la'.Таким образом, можно передать аргумент часового пояса с помощью функции execl ().Или есть какой-нибудь способ получить выходные данные в определенном часовом поясе.Ищу код c.

1 Ответ

0 голосов
/ 30 мая 2018

В этом простом случае самое простое решение - использовать setenv для изменения значения переменной окружения TZ непосредственно перед вызовом execl.(Предположительно, вы fork() перед вызовом execl; setenv следует вызывать после fork() только в дочернем процессе, чтобы он не изменял среду родителя.)

Вы можете создать весь список окружения и затем передать его в execle.Но это большая работа для небольшой выгоды.Возможно, вы захотите сделать это, если вы вызываете исполняемый файл setuid, или если вы хотите добавить много переменных окружения, или если ваша библиотека C не имеет setenv.Но в обычных случаях одиночный вызов setenv вполне подходит.

...