pty

socat를 사용하여 자체 pty 쌍을 만들 때 작업 제어가 작동하지 않습니다.
pty

socat를 사용하여 자체 pty 쌍을 만들 때 작업 제어가 작동하지 않습니다.

저는 퍼즐의 다양한 조각을 보면서 터미널 에뮬레이터를 이해하려고 노력하고 있습니다. socat을 사용하여 pty 쌍과 쉘 프로세스를 시작한 다음 picocom을 사용하여 연결하려고 합니다. 이것은 socat 명령에 대한 나의 이해입니다. $ socat -d -d PTY,raw,echo=0 EXEC:"/bin/sh",pty,stderr,setsid,sane 2024/03/12 08:12:16 socat[9106] N PTY is /dev/pts/5 2024/03/12 08:12:16 socat[9106...

Admin

하위 프로세스 내에서 PTY의 파일 설명자를 얻는 방법은 무엇입니까?
pty

하위 프로세스 내에서 PTY의 파일 설명자를 얻는 방법은 무엇입니까?

https://man7.org/linux/man-pages/man7/pty.7.html "UNIX 98 의사 터미널"에서는 작동한다고 말하지만 ptsname(그런 다음 open) 이 함수는 파일 설명자를 허용합니다. 거기에 0(STDIN)과 1(STDOUT)을 넣으려고 했지만 "장치에 부적절한 ioctl"이라는 오류 메시지가 표시되어 실패했습니다. 그놈 터미널에서 프로그램을 실행합니다. 나는 다른 xterm프로그램을 작성하고 있지 않습니다. 비동기(비차단) 비표준 하위 수준 입력 및 출력을 위한 파일...

Admin

의사 터미널이 서로 제어하고 반환 표시를 얻는 방법
pty

의사 터미널이 서로 제어하고 반환 표시를 얻는 방법

문제는: 내 의사 터미널은 /dev/pts/0이고, 대상 의사 터미널은 /dev/pts/4이며, 텍스트 dev/pts/4를 인쇄하기 위해 대상 의사 터미널을 얻으려고 합니다. 에코 텍스트 > / 명령을 사용합니다. 따라서 첫 번째 질문은 다음과 같습니다. echo text > /dev/pts/4 명령을 사용한 후 대상 호스트에 텍스트가 표시되지만 한 가지 단점은 텍스트를 표시한 후 대상에 다른 줄이 표시되고 Ctrl+를 눌러야 한다는 것입니다. c 수동 종료, 위 상황을 피하는 방법은 무엇...

Admin

설정 프로그램이 다른 터미널에서 실행 중일 때 GDB에서 "제어 터미널을 설정할 수 없습니다" 경고를 어떻게 억제할 수 있습니까?
pty

설정 프로그램이 다른 터미널에서 실행 중일 때 GDB에서 "제어 터미널을 설정할 수 없습니다" 경고를 어떻게 억제할 수 있습니까?

나는 프로그램을 디버깅하기 위해 GDB를 사용하고 있으며 그 출력을 GDB를 실행하는 터미널이 아닌 다른 터미널로 보내고 싶습니다. 이것이 내가 해온 일이다: 두 번째 터미널을 열고 를 사용하여 장치 이름을 확인한 tty후 비슷한 것을 얻으십시오 /dev/pts/14. 내 GDB 세션에서는 명령을 사용하여 tty /dev/pts/14출력을 터미널로 설정했습니다. 그런 다음 runGDB에서 명령을 실행하여 프로그램을 시작합니다. 이 설정은 출력을 터미널 2로 올바르게 지정하지만 문제는 터미널 2의 ...

Admin

프로세스를 어떻게 다시 소유합니까?
pty

프로세스를 어떻게 다시 소유합니까?

바로가기(sxhkd)를 사용하여 이 스크립트를 실행할 때: #!/bin/sh MUSIC_DIR="$HOME/music" songs=$(ls "$MUSIC_DIR") filename=$( echo -e "random\n$songs" | dmenu -l 30 -i -p "Play >> ") if [[ $filename = "random" ]] then filename=$(ls "$MUSIC_DIR" |shuf -n 1) fi if [[ -f "$MUSIC_DIR/$filenam...

Admin

socat에서 직렬 장치 분리를 시뮬레이션하는 방법
pty

socat에서 직렬 장치 분리를 시뮬레이션하는 방법

이 테스트 프로그램이 있어요 import sys for line in sys.stdin: print(line.strip()) print("DONE") 실제 장치(FTDI)에서 라인을 인쇄하도록 하면 python3 demo.py < /dev/ttyUSB0 그런 다음 내가 보내는 모든 줄을 인쇄한 다음 USB 케이블을 뽑으면 DONE메시지가 표시됩니다. 반면에 socat을 사용하여 가짜 tty를 생성하면 socat -d -d pty,raw,echo=0,link=ttyFake pty,r...

Admin

ctrl+c를 올바르게 처리하기 위해 내 쉘을 얻으려고합니다.
pty

ctrl+c를 올바르게 처리하기 위해 내 쉘을 얻으려고합니다.

Ctrl C를 누를 때 실행 중인 프로그램이 SIGINT를 수신하도록 쉘이 설정되는 방법을 이해하려고 노력하고 있지만 bash를 실행하고 내부에서 다른 프로그램을 실행한 다음 Ctrl + C를 누르면 쉘은 SIGINT를 수신하지 않습니다. 실행 중인 프로그램이 중지되지만 bash는 중지되지 않습니다. 이는 다른 쉘에서 bash를 시작할 때도 적용됩니다. 나는 아무 키나 누르면 서브루틴을 실행하는 나만의 특수 쉘 프로그램을 만들어 보았습니다. #! /usr/bin/env bash set -e whi...

Admin

pty 없이 직렬 터미널(RS-232)을 설정할 수 있나요?
pty

pty 없이 직렬 터미널(RS-232)을 설정할 수 있나요?

/dev/ttyS0RS-232 포트가 있고 널 모뎀을 통해 서로 연결된 두 대의 컴퓨터가 있습니다 . 나는 과거에 외부 터미널이 어떻게 작동했는지, 그리고 이것이 오늘날 Linux가 작동하는 방식과 어떻게 관련되는지 조금씩 이해하려고 노력하고 있습니다. 나는 다음과 같이 작동하도록했습니다 : 메인 컴퓨터: $ sudo socat /dev/ttyS0,raw,echo=0 exec:"/bin/bash -i",pty,stderr,setsid,sigint,sane 단말기: picocom -b 9600 /de...

Admin

loginctl에서 그래픽 tty를 결정하는 방법
pty

loginctl에서 그래픽 tty를 결정하는 방법

Loginctl은 많은 세션을 나열하며 어느 세션이 그래픽 세션인지 프로그래밍 방식으로 알고 싶습니다(예: GNOME 데스크탑). 아래 예에서는 GNome 데스크탑 세션, SSH 연결 및 텍스트 세션(getty)을 열었습니다. $ loginctl SESSION UID USER SEAT TTY 3 1000 user seat0 tty2 237 1000 user pts/2 260 1000 user seat0 tty3 3 sessions listed. $ Ct...

Admin

두 프로세스 간 통신에 사용되는 의사 터미널
pty

두 프로세스 간 통신에 사용되는 의사 터미널

타사 C 라이브러리(libmodbus중요한 경우) 직렬 장치(내 경우에는 /dev/ttyUSB0FTDI 칩셋 기반의 USB-RS485 어댑터를 통한 RS-485와 같은 장치)를 통해 통신합니다. CLI 매개변수를 기반으로 하는 이 실행 파일은 명령을 실행한 다음(내 경우에는 Modbus 클라이언트처럼) 응답을 기다리거나(내 경우에는 외부 Modbus 서버에서) 들어오는 명령을 수신할 수 있습니다(내 경우에는 예를 들어 Modbus 서버) 그런 다음 응답을 생성합니다. 외부 장치 없이 자동으로 실행 파...

Admin

/proc/self/fd/2는 `sudo -u other_user`에서 액세스할 수 없습니다.
pty

/proc/self/fd/2는 `sudo -u other_user`에서 액세스할 수 없습니다.

나는 종종 이것을 사용하여 tee /proc/self/fd/2stdout 및 stderr에 무언가를 표시하고 stdout에 대한 모든 출력을 유지하면서 stdout을 캡처합니다. 예를 들어 다음과 같습니다 do.sh. STD_OUT_STR=$(CMD ARGS ... 2>&1 | tee /proc/self/fd/2) # handle STD_OUT_STR ... ... 이것은 매우 잘 작동합니다. 예를 들어, ./do.sh 기본적으로 다음과 같이 작동합니다. bash -c 'echo hi...

Admin

네트워크 파이프를 통해 실행 중인 프로세스와 터미널 상호 작용을 수행하는 방법은 무엇입니까?
pty

네트워크 파이프를 통해 실행 중인 프로세스와 터미널 상호 작용을 수행하는 방법은 무엇입니까?

STDIO가 원격으로 연결될 수 있도록 터미널에서 실행하려는 프로그램을 어떻게 실행합니까? 특히, 한 호스트에서 gdb를 시작하고 해당 터미널 인터페이스에 원격으로 연결하여 CTRL+C를 사용하여 실행을 일시 중지하고 레이아웃(예: layout regs)을 변경할 수 있기를 원합니다. 아래 이미지는 제가 달성하려는 작업을 보여줍니다. 지금까지 내가 얻은 가장 가까운 방법은 다음 socat을 사용하여 pty를 만들고 원격 호스트에서 gdb를 시작하는 것입니다. $ socat PTY,link=$HOME...

Admin

socat을 사용하여 직렬 장치를 시뮬레이션할 때 버퍼를 삭제하는 방법
pty

socat을 사용하여 직렬 장치를 시뮬레이션할 때 버퍼를 삭제하는 방법

다음과 같은 가짜 직렬 장치를 만들고 있습니다. socat -d -d pty,raw,echo=0 pty,raw,echo=0 매번 새로운 번호를 가진 장치가 생성됩니다. /dev/pty/6그들에게 전화하자/dev/pty/7 내 테스트 컴퓨터에서 사용할 수 없는 하드웨어 장치를 시뮬레이션하기 위해 /dev/pty/6초당 20줄의 속도로 썼습니다. 이와 유사합니다(실제 프로젝트에서는 Python으로 작성하고 있지만 이는 동일한 문제를 보여줍니다). while true do date > /de...

Admin

zsh zpty는 macOS에서 작동하지 않습니다. Linux에서 실행할 수 있나요?
pty

zsh zpty는 macOS에서 작동하지 않습니다. Linux에서 실행할 수 있나요?

zsh 모듈 zsh/zpty는 Apple M1 macOS 시스템에서 실행되는 Linux 가상 시스템에서 제대로 실행되는 것 같습니다. 그러나 macOS에서는 동일한 방법이 작동하지 않습니다(동일한 호스트에서도). 저는 macOS에 사전 설치된 zsh 버전 /bin/zsh과 homebrew에서 설치된 zsh 버전 모두에서 이것을 시도했습니다. 내 관찰에 따르면 zpty 명령을 실행하여 의사 터미널을 만들고 그 안에서 명령을 실행하면 실제로 프로세스가 생성됩니다. 그러나 글쓰기 과정이 작동하지 않습니다....

Admin

chrooted Linux에서 "sudo: pty를 할당할 수 없습니다: 해당 장치가 없습니다"
pty

chrooted Linux에서 "sudo: pty를 할당할 수 없습니다: 해당 장치가 없습니다"

다음에 추가: 읽은 후 반복하는 것이 좋습니다"대체" 배포판으로 루트를 전환할 때 어떤 proc, sys 등을 번들로 마운트해야 합니까(또는 번들로 마운트하지 않아야 합니까)?: 내가 어떻게 알아: 일반적으로 sysfs, proc, dev, dev/pts 마운트를 호출합니다.앞으로 chroot, 시스템이 실행되는 동일한 장치에서 평가를 수행 할 수 있는 bind장치 를 사용 하고 싶습니다 .mount -o bind /dev dev/chroot 그러나 오류가 발생하는 이유는 설명되지 않으며 설정에서...

Admin