Linux: как определить, как был запущен процесс - PullRequest
1 голос
/ 28 сентября 2010

Как моя программа может определить, как она была запущена: кем-то, использующим командную строку, или другим процессом?

В программе есть дополнительная интерактивная часть, которую я хочу отключить, когда она была запущена другим процессом- работает в фоновом режиме;но когда он был запущен из терминала, я хочу, чтобы он делал интерактивный бит.

[править] Если это возможно сделать из программы на C ++.

Ответы [ 4 ]

3 голосов
/ 28 сентября 2010

Проверьте, если ваш стандартный isatty, например,

if (isatty(0))
{
    /* interactive! */
}
1 голос
/ 28 сентября 2010

определяет функцию isatty , которую можно использовать для проверки, подключены ли дескрипторы файла input (0) или output (1) к терминалу (что означает, что это интерактивный сеанс).

1 голос
/ 28 сентября 2010

Bash имеет простой тест, который скажет вам, был ли скрипт запущен из TTY:

if [ -t 0 ]; then
    echo "Interactive code goes here"
fi
1 голос
/ 28 сентября 2010

Обычно, просто предоставьте аргументы командной строки, которые вызывающая сторона может использовать для запуска в неинтерактивном режиме.Вы можете делать более причудливые вещи, но это довольно часто - много раз, это -q для тишины.

...