📄 perlcygwin.pod
字号:
on, just like it is in UNIX. So CR/LF translation needs to be requested ineither the C<open()> call like this: open(FH, ">:crlf", "out.txt");which will do conversion from LF to CR/LF on the output, or in theenvironment settings (add this to your .bashrc): export PERLIO=crlfwhich will pull in the crlf PerlIO layer which does LF -> CRLF conversionon every output generated by perl.=item * F<.exe>The Cygwin C<stat()>, C<lstat()> and C<readlink()> functions make the F<.exe>extension transparent by looking for F<foo.exe> when you ask for F<foo>(unless a F<foo> also exists). Cygwin does not require a F<.exe>extension, but I<gcc> adds it automatically when building a program.However, when accessing an executable as a normal file (e.g., I<cp>in a makefile) the F<.exe> is not transparent. The I<install> includedwith Cygwin automatically appends a F<.exe> when necessary.=item * Cygwin vs. Windows process idsCygwin processes have their own pid, which is different from theunderlying windows pid. Most posix compliant Proc functions expectthe cygwin pid, but several Win32::Process functions expect thewinpid. E.g. C<$$> is the cygwin pid of F</usr/bin/perl>, which is notthe winpid. Use C<Cygwin::winpid_to_pid()> and C<Cygwin::winpid_to_pid()>to translate between them.=item * Cygwin vs. Windows errorsUnder Cygwin, $^E is the same as $!. When using L<Win32 API Functions|Win32>,use C<Win32::GetLastError()> to get the last Windows error.=item * C<chown()>On WinNT C<chown()> can change a file's user and group IDs. On Win9x C<chown()>is a no-op, although this is appropriate since there is no security model.=item * MiscellaneousFile locking using the C<F_GETLK> command to C<fcntl()> is a stub thatreturns C<ENOSYS>.Win9x can not C<rename()> an open file (although WinNT can).The Cygwin C<chroot()> implementation has holes (it can not restrict fileaccess by native Win32 programs).Inplace editing C<perl -i> of files doesn't work without doing a backupof the file being edited C<perl -i.bak> because of windowish restrictions,therefore Perl adds the suffix C<.bak> automatically if you use C<perl -i>without specifying a backup extension.Using C<fork()> after loading multiple dlls may fail with an internal cygwinerror like the following: C:\CYGWIN\BIN\PERL.EXE: *** couldn't allocate memory 0x10000(4128768) for 'C:\CYGWIN\LIB\PERL5\5.6.1\CYGWIN-MULTI\AUTO\SOCKET\SOCKET.DLL' alignment, Win32 error 8 200 [main] perl 377147 sync_with_child: child -395691(0xB8) died before initialization with status code 0x1 1370 [main] perl 377147 sync_with_child: *** child state child loading dllsUse the rebase utility to resolve the conflicting dll addresses. Therebase package is included in the Cygwin netrelease. Use setup.exe fromF<http://www.cygwin.com/setup.exe> to install it and run rebaseall.=back=head2 Prebuilt methods:=over 4=item C<Cwd::cwd>Returns the current working directory.=item C<Cygwin::pid_to_winpid>Translates a cygwin pid to the corresponding Windows pid (which may ormay not be the same).=item C<Cygwin::winpid_to_pid>Translates a Windows pid to the corresponding cygwin pid (if any).=item C<Cygwin::win_to_posix_path>Translates a Windows path to the corresponding cygwin path respectingthe current mount points. With a second non-null argument returns anabsolute path. Double-byte characters will not be translated.=item C<Cygwin::posix_to_win_path>Translates a cygwin path to the corresponding cygwin path respectingthe current mount points. With a second non-null argument returns anabsolute path. Double-byte characters will not be translated.=item C<Cygwin::mount_table()>Returns an array of [mnt_dir, mnt_fsname, mnt_type, mnt_opts]. perl -e 'for $i (Cygwin::mount_table) {print join(" ",@$i),"\n";}' /bin c:\cygwin\bin system binmode,cygexec /usr/bin c:\cygwin\bin system binmode /usr/lib c:\cygwin\lib system binmode / c:\cygwin system binmode /cygdrive/c c: system binmode,noumount /cygdrive/d d: system binmode,noumount /cygdrive/e e: system binmode,noumount=item C<Cygwin::mount_flags>Returns the mount type and flags for a specified mount point.A comma-separated string of mntent->mnt_type (always"system" or "user"), then the mntent->mnt_opts, wherethe first is always "binmode" or "textmode". system|user,binmode|textmode,exec,cygexec,cygdrive,mixed, notexec,managed,nosuid,devfs,proc,noumountIf the argument is "/cygdrive", then just the volume mount settings,and the cygdrive mount prefix are returned.User mounts override system mounts. $ perl -e 'print Cygwin::mount_flags "/usr/bin"' system,binmode,cygexec $ perl -e 'print Cygwin::mount_flags "/cygdrive"' binmode,cygdrive,/cygdrive=item C<Cygwin::is_binmount>Returns true if the given cygwin path is binary mounted, false if thepath is mounted in textmode.=back=head1 INSTALL PERL ON CYGWINThis will install Perl, including I<man> pages. make install 2>&1 | tee log.make-installNOTE: If C<STDERR> is redirected C<make install> will B<not> promptyou to install I<perl> into F</usr/bin>.You may need to be I<Administrator> to run C<make install>. If youare not, you must have write access to the directories in question.Information on installing the Perl documentation in HTML format can befound in the F<INSTALL> document.=head1 MANIFEST ON CYGWINThese are the files in the Perl release that contain references to Cygwin.These very brief notes attempt to explain the reason for all conditionalcode. Hopefully, keeping this up to date will allow the Cygwin port tobe kept as clean as possible.=over 4=item Documentation INSTALL README.cygwin README.win32 MANIFEST Changes Changes5.004 Changes5.005 Changes5.6 Changes5.8 pod/perl.pod pod/perlport.pod pod/perlfaq3.pod pod/perldelta.pod pod/perl5004delta.pod pod/perl56delta.pod pod/perl561delta.pod pod/perl570delta.pod pod/perl572delta.pod pod/perl573delta.pod pod/perl58delta.pod pod/perl581delta.pod pod/perl590delta.pod pod/perlhist.pod pod/perlmodlib.pod pod/perltoc.pod pod.lst Porting/Glossary Porting/repository.pod Porting/checkAUTHORS.pl ext/Compress/Raw/Zlib/Changes ext/Compress/Raw/Zlib/README ext/Compress/Zlib/Changes ext/Cwd/Changes ext/DB_File/Changes ext/Encode/Changes ext/Sys/Syslog/Changes ext/Time/HiRes/Changes ext/Win32API/File/Changes lib/CGI/Changes lib/ExtUtils/CBuilder/Changes lib/ExtUtils/Changes lib/ExtUtils/NOTES lib/ExtUtils/PATCHING lib/ExtUtils/README lib/Module/Build/Changes lib/Net/Ping/Changes lib/Test/Harness/Changes lib/Term/ANSIColor/ChangeLog lib/Term/ANSIColor/README README.symbian symbian/TODO=item Build, Configure, Make, Install cygwin/Makefile.SHs ext/IPC/SysV/hints/cygwin.pl ext/NDBM_File/hints/cygwin.pl ext/ODBM_File/hints/cygwin.pl hints/cygwin.sh Configure - help finding hints from uname, shared libperl required for dynamic loading Makefile.SH Cross/Makefile-cross-SH - linklibperl Porting/patchls - cygwin in port list installman - man pages with :: translated to . installperl - install dll, install to 'pods' makedepend.SH - uwinfix regen_lib.pl - file permissions NetWare/Makefile plan9/mkfile symbian/sanity.pl symbian/sisify.pl hints/uwin.sh vms/descrip_mms.template win32/Makefile win32/makefile.mk=item Tests t/io/fs.t - no file mode checks if not ntsec skip rename() check when not check_case:relaxed t/io/tell.t - binmode t/lib/cygwin.t - builtin cygwin function tests t/op/groups.t - basegroup has ID = 0 t/op/magic.t - $^X/symlink WORKAROUND, s/.exe// t/op/stat.t - no /dev, skip Win32 ftCreationTime quirk (cache manager sometimes preserves ctime of file previously created and deleted), no -u (setuid) t/op/taint.t - can't use empty path under Cygwin Perl t/op/time.t - no tzset()=item Compiled Perl Source EXTERN.h - __declspec(dllimport) XSUB.h - __declspec(dllexport) cygwin/cygwin.c - os_extras (getcwd, spawn, and several Cygwin:: functions) perl.c - os_extras, -i.bak perl.h - binmode doio.c - win9x can not rename a file when it is open pp_sys.c - do not define h_errno, init _pwent_struct.pw_comment util.c - use setenv util.h - PERL_FILE_IS_ABSOLUTE macro pp.c - Comment about Posix vs IEEE math under Cygwin perlio.c - CR/LF mode perliol.c - Comment about EXTCONST under Cygwin=item Compiled Module Source ext/Compress/Raw/Zlib/Makefile.PL - Can't install via CPAN shell under Cygwin ext/Compress/Raw/Zlib/zlib-src/zutil.h - Cygwin is Unix-like and has vsnprintf ext/Errno/Errno_pm.PL - Special handling for Win32 Perl under Cygwin ext/POSIX/POSIX.xs - tzname defined externally ext/SDBM_File/sdbm/pair.c - EXTCONST needs to be redefined from EXTERN.h ext/SDBM_File/sdbm/sdbm.c - binary open ext/Sys/Syslog/Syslog.xs - Cygwin has syslog.h ext/Sys/Syslog/win32/compile.pl - Convert paths to Windows paths ext/Time/HiRes/HiRes.xs - Various timers not available ext/Time/HiRes/Makefile.PL - Find w32api/windows.h ext/Win32/Makefile.PL - Use various libraries under Cygwin ext/Win32/Win32.xs - Child dir and child env under Cygwin ext/Win32API/File/File.xs - _open_osfhandle not implemented under Cygwin ext/Win32CORE/Win32CORE.c - __declspec(dllexport)=item Perl Modules/Scripts ext/B/t/OptreeCheck.pm - Comment about stderr/stdout order under Cygwin ext/Digest/SHA/bin/shasum - Use binary mode under Cygwin ext/Sys/Syslog/win32/Win32.pm - Convert paths to Windows paths ext/Time/HiRes/HiRes.pm - Comment about various timers not available ext/Win32API/File/File.pm - _open_osfhandle not implemented under Cygwin ext/Win32CORE/Win32CORE.pm - History of Win32CORE under Cygwin lib/CGI.pm - binmode and path separator lib/CPANPLUS/Dist/MM.pm - Commented out code that fails under Win32/Cygwin lib/CPANPLUS/Internals/Constants/Report.pm - OS classifications lib/CPANPLUS/Internals/Constants.pm - Contants for Cygwin lib/CPANPLUS/Internals/Report.pm - Example of Cygwin report lib/CPANPLUS/Module.pm - Abort if running on old Cygwin version lib/Cwd.pm - hook to internal Cwd::cwd lib/ExtUtils/CBuilder/Platform/cygwin.pm - use gcc for ld, and link to libperl.dll.a lib/ExtUtils/CBuilder.pm - Cygwin is Unix-like lib/ExtUtils/Install.pm - Install and rename issues under Cygwin lib/ExtUtils/MM.pm - OS classifications lib/ExtUtils/MM_Any.pm - Example for Cygwin lib/ExtUtils/MakeMaker.pm - require MM_Cygwin.pm lib/ExtUtils/MM_Cygwin.pm - canonpath, cflags, manifypods, perl_archive lib/File/Fetch.pm - Comment about quotes using a Cygwin example lib/File/Find.pm - on remote drives stat() always sets st_nlink to 1 lib/File/Spec/Cygwin.pm - case_tolerant lib/File/Spec/Unix.pm - preserve //unc lib/File/Spec/Win32.pm - References a message on cygwin.com lib/File/Spec.pm - Pulls in lib/File/Spec/Cygwin.pm lib/File/Temp.pm - no directory sticky bit lib/Module/Build/Compat.pm - Comment references 'make' under Cygwin lib/Module/Build/Platform/cygwin.pm - Use '.' for man page separator lib/Module/Build.pm - Cygwin is Unix-like lib/Module/CoreList.pm - List of all module files and versions lib/Net/Domain.pm - No domainname command under Cygwin lib/Net/Netrc.pm - Bypass using stat() under Cygwin lib/Net/Ping.pm - ECONREFUSED is EAGAIN under Cygwin lib/Pod/Find.pm - Set 'pods' dir lib/Pod/Perldoc/ToMan.pm - '-c' switch for pod2man lib/Pod/Perldoc.pm - Use 'less' pager, and use .exe extension lib/Term/ANSIColor.pm - Cygwin terminal info lib/perl5db.pl - use stdin not /dev/tty utils/perlbug.PL - Add CYGWIN environment variable to report=item Perl Module Tests ext/Compress/Zlib/t/14gzopen.t ext/Cwd/t/cwd.t ext/DB_File/t/db-btree.t ext/DB_File/t/db-hash.t ext/DB_File/t/db-recno.t ext/DynaLoader/t/DynaLoader.t ext/File/Glob/t/basic.t ext/GDBM_File/t/gdbm.t ext/POSIX/t/sysconf.t ext/POSIX/t/time.t ext/SDBM_File/t/sdbm.t ext/Sys/Syslog/t/syslog.t ext/Time/HiRes/t/HiRes.t ext/Win32/t/Unicode.t ext/Win32API/File/t/file.t ext/Win32CORE/t/win32core.t lib/AnyDBM_File.t lib/Archive/Extract/t/01_Archive-Extract.t lib/Archive/Tar/t/02_methods.t lib/CPANPLUS/t/05_CPANPLUS-Internals-Fetch.t lib/CPANPLUS/t/20_CPANPLUS-Dist-MM.t lib/ExtUtils/t/Embed.t lib/ExtUtils/t/eu_command.t lib/ExtUtils/t/MM_Cygwin.t lib/ExtUtils/t/MM_Unix.t lib/File/Compare.t lib/File/Copy.t lib/File/Find/t/find.t lib/File/Path.t lib/File/Spec/t/crossplatform.t lib/File/Spec/t/Spec.t lib/Module/Build/t/destinations.t lib/Net/hostent.t lib/Net/Ping/t/110_icmp_inst.t lib/Net/Ping/t/500_ping_icmp.t lib/Net/t/netrc.t lib/Pod/Simple/t/perlcyg.pod lib/Pod/Simple/t/perlcygo.txt lib/Pod/Simple/t/perlfaq.pod lib/Pod/Simple/t/perlfaqo.txt lib/User/grent.t lib/User/pwent.t=back=head1 BUGS ON CYGWINSupport for swapping real and effective user and group IDs is incomplete.On WinNT Cygwin provides C<setuid()>, C<seteuid()>, C<setgid()> and C<setegid()>.However, additional Cygwin calls for manipulating WinNT access tokensand security contexts are required.=head1 AUTHORSCharles Wilson <cwilson@ece.gatech.edu>,Eric Fifer <egf7@columbia.edu>,alexander smishlajev <als@turnhere.com>,Steven Morlock <newspost@morlock.net>,Sebastien Barre <Sebastien.Barre@utc.fr>,Teun Burgers <burgers@ecn.nl>,Gerrit P. Haase <gp@familiehaase.de>,Reini Urban <rurban@cpan.org>,Jan Dubois <jand@activestate.com>,Jerry D. Hedden <jdhedden@cpan.org>.=head1 HISTORYLast updated: 2007-09-25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -