file-descriptors

두 스레드가 동일한 파일 설명자 번호를 잘못 반환하는 알려진 Linux 커널 버그가 있습니까?
file-descriptors

두 스레드가 동일한 파일 설명자 번호를 잘못 반환하는 알려진 Linux 커널 버그가 있습니까?

O_CREAT를 사용하는 sem_open이 때때로 EBADF에서 실패하는 다중 스레드 프로그램이 있습니다. 이것은 NXP의 ARM Linux 4.9.88 임베디드 장치에 있습니다. 재현하기가 매우 어렵지만 파일을 생성할 때 두 스레드가 동일한 파일 설명자를 수신하는 것처럼 보이는 strace 상황을 발견했습니다(하나는 sem_open 내부의 openat()에 대한 것이고 다른 하나는 슬레이브 파이프라인2에 의해 반환된 읽기 끝). 파일과 파이프라인이 동시에 존재합니다. strace(pid 266은 s...

Admin

STDIN, STDOUT 등과 연관된 파일 설명자를 식별하는 방법
file-descriptors

STDIN, STDOUT 등과 연관된 파일 설명자를 식별하는 방법

나는 이것을 알려주는 일부 명령이나 환경 변수를 기억하는 것 같습니다. 예를 들어, 저는 기본적으로 터미널에서 무언가를 실행하고 싶습니다. echo $STDIN /dev/tty echo $STDOUT /dev/tty fdescribe 0 or fdescribe /dev/stdin /dev/tty fdescribe 1 or fdescribe /dev/stdout /dev/tty 그러나 스크립트나 하위 프로세스에서 실행될 수 있습니다. ...

Admin

파일 설명자 47은 무엇에 사용됩니까?
file-descriptors

파일 설명자 47은 무엇에 사용됩니까?

달려가면서 알아차렸어 ls /proc/self/fd 다음과 같은 결과가 나타납니다. 0 1 2 3 47 분명히 , 0및 1는 각각 , 및 의 설명자이며 2디렉토리에 액세스하는 데 사용되는 설명자입니다.stdinstdoutstderr3ls 하지만 무엇입니까 47? 실행 중인 출력은 다음과 ls같기 때문에 (특정 항목이 아닌) 셸에서 전달된 항목이어야 합니다 .cat $ cat /proc/self/fd/47 cat: /proc/self/fd/47: Permission denied # exam...

Admin

Bash 자체의 출력은 어디로 가나요?
file-descriptors

Bash 자체의 출력은 어디로 가나요?

sleep 100&스크립트의 경우 명령 다음에 쉘에 나타나는 "[1]00000" 메시지를 리디렉션하고 싶습니다 . 더 이상 필요하지 않지만 이 문제를 해결하는 동안 Bash 자체의 출력은 어디로 가는지 생각하기 시작했습니다. 왜 bash > test, bash &> test아니면 bash | [some program]작동하지 않습니까? 파일 디스크립터 1과 2는 단지 터미널에 쓰여질 파일 디스크립터겠죠? 그렇다면 bash나 다른 프로그램이 사용자에게 인쇄하려는 경우 어떻게 표...

Admin

비표준 파일 설명자를 사용하여 매핑된 파일을 통해 파일을 배열로 읽는 방법은 무엇입니까?
file-descriptors

비표준 파일 설명자를 사용하여 매핑된 파일을 통해 파일을 배열로 읽는 방법은 무엇입니까?

mapfile -t -u 7 arr < textfilebash: mapfile: 7: invalid file descriptor: Bad file descriptor 그러한 설명자를 허용하는 파일을 한 줄씩 읽는 더 자세한 방법을 알려주십시오 . read_w_while() { while IFS="" read -u 7 -r l || [[ -n "${l}" ]]; do echo "${l}" done 7< textfile 표준 설명자는 0광범위하게 사용됩니다. 그러한 설명자를 사용하면 스...

Admin

파일 설명자를 통해 "익명" 심볼릭 링크의 타임스탬프 변경
file-descriptors

파일 설명자를 통해 "익명" 심볼릭 링크의 타임스탬프 변경

이 futime*함수 계열의 구현은 다음과 같습니다. utimensat(fd, NULL, time, 0) 그리고 lutime*그것들은 사용됩니다 utimensat(AT_FDCWD, path, time, AT_SYMLINK_NOFOLLOW) 내 추측은 "심볼릭 링크를 참조하는 파일 설명자 가져오기" 섹션에서 나왔습니다.https://man7.org/linux/man-pages/man7/symlink.7.html그게 다야 : int fd = open(path, O_PATH | O_NOFOLLOW); ...

Admin

열린 파일 설명자에 대한 파일 이름 만들기
file-descriptors

열린 파일 설명자에 대한 파일 이름 만들기

파일 시스템에 파일이 있습니다. open(2)파일의 파일 설명자를 가져오는 함수를 사용하여 파일을 열고 있습니다 . 이제 파일을 삭제하겠습니다. 하지만 여전히 파일 설명자가 있으므로 마지막 파일 설명자가 닫힐 때까지 파일 시스템이 내 파일에 대한 파일 할당을 삭제하지 않기 때문에 문제 없이 파일을 읽고 쓸 수 있습니다. 그러나 파일을 삭제한 후에도 파일 설명자가 남아 있는 동안 해당 파일 설명자에 파일 이름을 다시 생성(재바인딩)할 수 있습니까? 그러면 파일이 파일 시스템에 다시 나타나서 파일 설명자...

Admin

Linux에서 표준 입력, 출력 및 오류 파일 설명자가 언제 어디서 처음 열리나요?
file-descriptors

Linux에서 표준 입력, 출력 및 오류 파일 설명자가 언제 어디서 처음 열리나요?

stdin, stdout 및 stderr(fds)은 어디에 있습니까?첫 번째열려 있는? 커널에서 만든건가요? 심볼릭 링크 /dev/std{in,out,err}는 언제 어디서 만들어졌습니까? 이를 수행하는 코드는 어디에 있습니까? 나는 그것이 리눅스 커널 소스에 있다고 가정하고 있지만, archlinux 6.5.3-arch1-1 리눅스 커널 github 저장소에서 검색한 후에도 어디서 발생하는지 찾을 수 없습니다. 편집: 이 질문에 반대표를 던졌다면 제가 더 잘할 수 있도록 이유를 설명해 주시겠습니까?...

Admin

단순히 `| cat -`을 사용하면 파일 설명자 오류가 발생합니다.
file-descriptors

단순히 `| cat -`을 사용하면 파일 설명자 오류가 발생합니다.

이것은 작동하는 diff 명령입니다: $ diff -u <(echo 'foo:bar:baz' | tr : "\n") <(echo 'foo:baz' | tr : "\n") --- /dev/fd/11 2023-08-30 13:11:50 +++ /dev/fd/13 2023-08-30 13:11:50 @@ -1,3 +1,2 @@ foo -bar baz 에서 파이프라인을 추가하면 diff모든 명령이 다음 오류와 함께 실패합니다. $ diff -u <(echo 'foo:bar:baz' ...

Admin

IO(docker)를 차단하지 않고 stdin에 데이터가 있는지 확인하는 방법은 무엇입니까?
file-descriptors

IO(docker)를 차단하지 않고 stdin에 데이터가 있는지 확인하는 방법은 무엇입니까?

을 실행하면 을 echo this | docker run -i alpine cat얻습니다 this. 을 실행하면 stdin을 읽었 docker run -i alpine cat기 때문에 터미널이 차단되지만 cat거기에는 아무것도 없습니다. 열린 파일 설명자를 확인할 수 있습니다. 을 실행하면 docker run -i alpine ls -lA /proc/1/fd표준 출력에 다음이 표시됩니다. lr-x------ 1 root root 64 Aug 9 13:45 0 -&g...

Admin

파일 설명자 수가 다름
file-descriptors

파일 설명자 수가 다름

나는 여기에 기본적인 것을 놓치고 있다고 확신합니다. 내가 실행 중인 시스템에서: cat /proc/sys/fs/file-nr 2240 0 763924 동일한 시스템에서 다음을 수행하면: sum=0; for pid in /proc/[0-9]*; do fd=$(ls $pid/fd | wc -l); sum=$((sum + fd)); done; echo $sum 결과는 훨씬 적습니다 872. 어떻게요? 누군가 이것을 설명할 수 있나요? 감사해요. ...

Admin

한계.
file-descriptors

한계.

장3.6 리디렉션Bash 매뉴얼은 다음과 같이 말합니다: 9보다 큰 파일 설명자를 사용하는 리디렉션은 쉘에서 내부적으로 사용되는 파일 설명자와 충돌할 수 있으므로 주의해서 사용해야 합니다. 그러나 장2.7 리디렉션내가 아는 한 POSIX 사양에는 수량 제한이 언급되어 있지 않습니까? 셸에 따라 어떤 제한 사항을 알고 있어야 합니까? 파일 설명자 번호가 이미 셸에서 내부적으로 사용되고 있는지 확인하고 건너뛸 수 있나요? 사용할 수 있는 최대 파일 설명자 수는 얼마입니까? ...

Admin

셸의 임시 심볼릭 링크 - "명명된 프로세스 대체" - 디스크에 복사본/심볼릭 링크를 만들지 않고 파일 이름을 바꾸시겠습니까?
file-descriptors

셸의 임시 심볼릭 링크 - "명명된 프로세스 대체" - 디스크에 복사본/심볼릭 링크를 만들지 않고 파일 이름을 바꾸시겠습니까?

.eml 확장자가 없는 파일을 이메일 파일로 여는 대신 Thunderbird는 새 이메일 작성을 시작하여 첨부 파일로 추가합니다. 스크립트에서 Thunderbird를 사용하기 위해 저는 "일시적으로 이름을 바꾸고" Thunderbird에서 file열고 file.eml(편집용이지만 적어도 읽기용으로) 디스크에 아무것도 저장하지 않고 닫을 수 있는 방법을 찾고 있습니다 . 과정의 기억. 파일을 복사하거나 임시 위치에 파일에 대한 심볼릭 링크를 생성하면 가능합니다.프로세스 대체를 사용하는 우아한 방법이 많...

Admin