LINUX.ORG.RU

Как изменить контролирующий терминал для нового процесса?

 , ,


1

2

Вот например запускаю

# tty
/dev/pts/2
# ssh root@9.9.9.9 0</dev/pts/7 1>/dev/pts/7 2>/dev/pts/7
root@9.9.9.9's password:
Те несмотря на то, что все дескрипторы подменил, ssh открывает /dev/tty и пишет в текущий /dev/pts/2.

Как запустить процесс с новым контролирующим терминалом?



Последнее исправление: cyber_eagle (всего исправлений: 1)

man 2 setsid, man 7 credentials, man 2 open

Если я правильно понял проблему, нужно сделать setsid (становясь при этом лидером группы процессов из одного процесса без контролирующего терминала), а потом открыть файл, который является терминалом, без флага O_NOCTTY.

anonymous
()
Ответ на: комментарий от anonymous
void main() {
	int cfd;
	
	printf("%d\n",getpid());

	close(0);
	close(1);
	close(2);
	setsid();
	
	open("/dev/pts/7",O_RDONLY);
	open("/dev/pts/7",O_WRONLY);
	open("/dev/pts/7",O_WRONLY);

	if(fork() == 0)
	{
		printf("%d\n",getpid());
		sleep(10);
	}
}

У меня затуп... control terminal удаляется, но новый после открытия не устанавливается.

cyber_eagle
() автор топика
Ответ на: комментарий от cyber_eagle

Вот, что нашел: «Systems derived from UNIX System V allocate the controlling terminal for a session when the session leader opens the first terminal device that is not already associated with a session. »

Вообщем набо подключатся к терминалу, который не был еще открыт в другой сессии.

cyber_eagle
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.