나는 이것을하는 데 너무 익숙해졌습니다.
someprogram >output.file
프로그램이 생성하는 출력을 파일에 저장하려고 할 때마다 수행합니다. 또한이 IO 리디렉션 의 두 가지 변형을 알고 있습니다 .
someprogram 2>output.of.stderr.file
(stderr 용)someprogram &>output.stderr.and.stdout.file
(stdout + stderr 겸용)
오늘 나는 불가능하다고 생각한 상황을 겪었습니다. 다음 명령을 사용하고 xinput test 10
예상대로 다음과 같은 결과가 나타납니다.
user @ hostname : ~ $ xinput 테스트 10 키 프레스 30 키 릴리스 30 키 프레스 40 키 릴리스 40 키 누름 32 키 릴리스 32 키 누름 65 키 릴리스 65 키 누름 61 키 릴리스 61 키 누름 31 ^ C user @ hostname : ~ $
이 출력은 평소처럼을 사용하여 파일에 저장할 수있을 것으로 기대했습니다 xinput test 10 > output.file
. 그러나 내 기대와 달리 파일 output.file은 비어 있습니다. 이것은 xinput test 10 &> output.file
stdout 또는 stderr에서 무언가를 놓치지 않도록하기 위해서도 마찬가지입니다 .
나는 정말로 혼란 스러우므로 xinput
프로그램이 출력을 리디렉션하지 않는 방법이 있는지 물어보십시오 .
최신 정보
나는 출처를 보았다. 이 코드에 의해 출력이 생성되는 것 같습니다 (아래 스 니펫 참조). 출력이 일반 printf에 의해 생성되는 것처럼 보입니다.
// 파일 test.c에서 static void print_events (디스플레이 * dpy) { XEvent 이벤트; while (1) { XNextEvent (dpy, & Event); // [... 다른 이벤트 유형은 여기에서 생략됩니다 ...] if ((Event.type == key_press_type) || (Event.type == key_release_type) { int 루프; XDeviceKeyEvent * key = (XDeviceKeyEvent *) & Event; printf ( "key % s % d", (Event.type == key_release_type)? "release": "press", 키-> 키 코드); for (loop = 0; loopaxes_count; 루프 ++) { printf ( "a [% d] = % d", 키-> first_axis + 루프, 키-> axis_data [loop]); } printf ( "\ n"); } } }
소스를 이것으로 수정했습니다 (아래 스 니펫 참조). stderr에 출력 사본을 가질 수 있습니다. 이 출력은 리디렉션 할 수 있습니다.
// 파일 test.c에서 static void print_events (디스플레이 * dpy) { XEvent 이벤트; while (1) { XNextEvent (dpy, & Event); // [... 다른 이벤트 유형은 여기에서 생략됩니다 ...] if ((Event.type == key_press_type) || (Event.type == key_release_type) { int 루프; XDeviceKeyEvent * key = (XDeviceKeyEvent *) & Event; printf ( "key % s % d", (Event.type == key_release_type)? "release": "press", 키-> 키 코드); fprintf (stderr, "key % s % d", (Event.type == key_release_type)? "release": "press", 키-> 키 코드); for (loop = 0; loopaxes_count; 루프 ++) { printf ( "a [% d] = % d", 키-> first_axis + 루프, 키-> axis_data [loop]); } printf ( "\ n"); } } }
현재 내 생각은 리디렉션을 수행하면 프로그램이 키 누름 키 릴리스 이벤트를 모니터링하는 기능을 잃어 버릴 수 있다는 것입니다.