Windows 및 Linux 용 Perl 다중 스레딩 소프트웨어를 각각 스레드 및 포크 모듈을 사용하여 개발하고 있습니다. 모든 것이 쉘로 보내지는 표준 출력으로 잘 작동하지만 일단 스크립트에 Tk 모듈을 포함시켜 GUI를 생성하기로 결정하면 응용 프로그램의 Windows 버전 만 제대로 작동하지만 실제로는 좋지 않지만 출력은 사용할 수 있습니다. 내가 리눅스에서 Forks 모듈과 스크립트를 시작하는 간단한 버튼과 함께 실행하려고하면 뭔가 잘못되었다. 다음은PERL Tk 및 Forks 불일치 모듈
, 당신은 그와 관련된 오류 메시지를 찾을 수 있습니다
프로토 타입 불일치 모두의 Tk와 포크 모듈에 포함 된 공통 기능과 연계 될 수 있지만, 솔직히 나는 방법을 모른다***.button (1):
0 0x32bef88 IV f=00000001 undef(1)
SV = IV(0x32bef78) at 0x32bef88
REFCNT = 1
FLAGS =()
IV = 0
Prototype mismatch: sub CORE::GLOBAL::exit (;$) vs none at /usr/local/lib/perl5/site_perl/5.26.0/x86_64-linux/forks.pm line 1509.***
그것을 해결하십시오. 'Tk'함수의 특정 '포크'를 포함 시키려고했지만이를 수정할 방법이 없습니다.
이 주제에 대한 도움을 미리 감사드립니다.
'Tk' 모듈과'forks' 모듈을 어떻게로드하는지 보여주는 최소한의 예제 코드를 제공하십시오. 그리고 프로세스를 포크하는 방법을 알려주세요. –
Perl/TK는 제가 아는 바에 따르면 스레드 안전하지 않습니다. 항상 동일한 스레드 내부에서 작업을 수행해야합니다. 그러나 Windows의 포크는 스레드를 사용하여 에뮬레이트됩니다. –
또한 "fork 된 프로세스의 exit를 사용하면 자식 프로세스와 부모 프로세스가 모두 종료됩니다. 기본적으로 Tk :: exit를 가져 오므로 분기 된 프로세스에서 CORE :: exit를 사용해야합니다." – charlesbridge