vala 하위 프로세스를 시간 초과하는 방법은 무엇입니까?

Navaneeth P

GLib.Subprocess에서 실행 파일을 실행하고 그 결과를 추출하려고합니다. 그러나 무한 루프 일 수 있으며 결코 끝나지 않습니다. 따라서 1 초 후에 하위 프로세스가 종료되기를 원합니다. 내가 시도한 것은 다음과 같습니다.

string executable = "/path/to/executable";
string input = "some_input";
uint timeout_id = 0;
...
...
try {
    string output_string;
    var subp = new GLib.Subprocess.newv ({executable}, SubprocessFlags.STDIN_PIPE | SubprocessFlags.STDOUT_PIPE);
    timeout_id = GLib.Timeout.add (1, () => {
        subp.force_exit ();
        source_remove ();
        return false;
    });
    subp.communicate_utf8 (input, null, out output_string, null);
} catch (GLib.Error e) {
    print ("Error: %s\n", e.message);
}
...
...
void source_remove () {
    if (timeout_id > 0) {
        Source.remove (timeout_id);
        timeout_id = 0;
    }
}

나는 또한 사용해 {"timeout", "1", executable}보았지만 실행 파일이 무한 루프이면 멈추지 않습니다.

Nielsdg

문제는 다음 줄에 있습니다.

    subp.communicate_utf8 (input, null, out output_string, null);

GSubProcess.communicate_utf8()프로세스가 종료 될 때까지 차단되는 동기 호출을 사용하고 있습니다 . 타임 아웃 콜백은 메인 루프 (동일한 스레드를 의미 함)에서도 호출되기 때문에 호출되지 않습니다. 이를 방지하려면 비동기 변형 인 GSubProcess.communicate_utf8_async().

참고 : source_remove()타임 아웃 콜백 내 에서 호출 할 필요는 없습니다 . GSource는 false를 반환하여 이미 자동으로 제거됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

실시간 프로세스를 시작하는 방법은 무엇입니까?

분류에서Dev

Vala의 libsoup에서 DNS를 캐시하는 방법은 무엇입니까?

분류에서Dev

Asynctask를 시간 초과하고 ProgressDialog를 닫는 방법은 무엇입니까?

분류에서Dev

XMPPFramework로 초대 요청 연결 시간 초과를 설정하는 방법은 무엇입니까?

분류에서Dev

Python 스크립트와 하위 프로세스간에 PID를 전환하는 방법은 무엇입니까?

분류에서Dev

쉘 스크립팅에 대한 시간 초과를 도입하는 방법은 무엇입니까?

분류에서Dev

REACTJS 시간 초과시 페이지를로드하는 방법은 무엇입니까?

분류에서Dev

Laravel에서 세션 시간 초과를 설정하는 방법은 무엇입니까?

분류에서Dev

AFNetworking에서 AFHTTPClient로 시간 초과 간격을 설정하는 방법은 무엇입니까?

분류에서Dev

각도기 테스트를 디버깅 할 때 시간 초과를 피하는 방법은 무엇입니까?

분류에서Dev

노드 프로세스의 시간대를 설정하는 방법은 무엇입니까?

분류에서Dev

특정 기간 동안 프로세스를 일시 중단하는 방법은 무엇입니까?

분류에서Dev

TCP 쓰기 시간 초과 처리를 테스트하는 방법은 무엇입니까?

분류에서Dev

시간 초과 후 bash 스크립트를 자체 종료하는 방법은 무엇입니까?

분류에서Dev

스크립트 "내에서"시간 초과를 실행하는 방법은 무엇입니까?

분류에서Dev

시간 초과를 추가하고 Java에서 코드를 폴링하는 방법은 무엇입니까?

분류에서Dev

Erlang의 시간 초과로 인해 handle_info를 트리거하는 방법은 무엇입니까?

분류에서Dev

시간 초과로 node.js를 실행하는 방법은 무엇입니까?

분류에서Dev

시간 초과 후 JS로 YouTube를 재생하는 방법은 무엇입니까?

분류에서Dev

PHP : 입력 데이터 부재의 시간 초과를 추적하는 방법은 무엇입니까?

분류에서Dev

Flask에서 웹훅 응답 시간 초과를 처리하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Windows GPU "시간 초과 감지 및 복구"를 방지하는 방법은 무엇입니까?

분류에서Dev

htop에 프로세스와 하위 프로세스 만 표시하는 방법은 무엇입니까?

분류에서Dev

HoloView로 시간 범위를 시각화하는 방법은 무엇입니까?

분류에서Dev

핵심 Java 응용 프로그램에서 세션 시간 초과를 유지하는 방법은 무엇입니까?

분류에서Dev

Sudo 자격 증명 타임 스탬프 시간 초과를 일시적으로 비활성화하는 방법은 무엇입니까?

분류에서Dev

ZeroMQ.js에서 연결 시간 초과를 올바르게 처리하는 방법은 무엇입니까?

분류에서Dev

Javascript에서 각 반복 사이에 시간 초과를 설정하는 방법은 무엇입니까?

분류에서Dev

소켓 읽기 시간 초과를 변경하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    실시간 프로세스를 시작하는 방법은 무엇입니까?

  2. 2

    Vala의 libsoup에서 DNS를 캐시하는 방법은 무엇입니까?

  3. 3

    Asynctask를 시간 초과하고 ProgressDialog를 닫는 방법은 무엇입니까?

  4. 4

    XMPPFramework로 초대 요청 연결 시간 초과를 설정하는 방법은 무엇입니까?

  5. 5

    Python 스크립트와 하위 프로세스간에 PID를 전환하는 방법은 무엇입니까?

  6. 6

    쉘 스크립팅에 대한 시간 초과를 도입하는 방법은 무엇입니까?

  7. 7

    REACTJS 시간 초과시 페이지를로드하는 방법은 무엇입니까?

  8. 8

    Laravel에서 세션 시간 초과를 설정하는 방법은 무엇입니까?

  9. 9

    AFNetworking에서 AFHTTPClient로 시간 초과 간격을 설정하는 방법은 무엇입니까?

  10. 10

    각도기 테스트를 디버깅 할 때 시간 초과를 피하는 방법은 무엇입니까?

  11. 11

    노드 프로세스의 시간대를 설정하는 방법은 무엇입니까?

  12. 12

    특정 기간 동안 프로세스를 일시 중단하는 방법은 무엇입니까?

  13. 13

    TCP 쓰기 시간 초과 처리를 테스트하는 방법은 무엇입니까?

  14. 14

    시간 초과 후 bash 스크립트를 자체 종료하는 방법은 무엇입니까?

  15. 15

    스크립트 "내에서"시간 초과를 실행하는 방법은 무엇입니까?

  16. 16

    시간 초과를 추가하고 Java에서 코드를 폴링하는 방법은 무엇입니까?

  17. 17

    Erlang의 시간 초과로 인해 handle_info를 트리거하는 방법은 무엇입니까?

  18. 18

    시간 초과로 node.js를 실행하는 방법은 무엇입니까?

  19. 19

    시간 초과 후 JS로 YouTube를 재생하는 방법은 무엇입니까?

  20. 20

    PHP : 입력 데이터 부재의 시간 초과를 추적하는 방법은 무엇입니까?

  21. 21

    Flask에서 웹훅 응답 시간 초과를 처리하는 가장 좋은 방법은 무엇입니까?

  22. 22

    Windows GPU "시간 초과 감지 및 복구"를 방지하는 방법은 무엇입니까?

  23. 23

    htop에 프로세스와 하위 프로세스 만 표시하는 방법은 무엇입니까?

  24. 24

    HoloView로 시간 범위를 시각화하는 방법은 무엇입니까?

  25. 25

    핵심 Java 응용 프로그램에서 세션 시간 초과를 유지하는 방법은 무엇입니까?

  26. 26

    Sudo 자격 증명 타임 스탬프 시간 초과를 일시적으로 비활성화하는 방법은 무엇입니까?

  27. 27

    ZeroMQ.js에서 연결 시간 초과를 올바르게 처리하는 방법은 무엇입니까?

  28. 28

    Javascript에서 각 반복 사이에 시간 초과를 설정하는 방법은 무엇입니까?

  29. 29

    소켓 읽기 시간 초과를 변경하는 방법은 무엇입니까?

뜨겁다태그

보관