Cygwin: Does it peacefully coexist with normal Windows operation?

3

I would like to install cygwin, primarily to run gcc and associated tool chain, but before doing so, I'd like to have a heads-up on ways in which installing Cygwin changes the operation of Windows (or Windows console) that need to be anticipated.

Perhaps there is no problem interaction whatsoever. However, as Cygwin (or optional components) provides functionality that substitute for linux OS and environment functions, I don't know what it needs to do to provide those.

Clearly some Cygwin programs are just executables to be called upon when needed. More of a question mark are:

  • Console and shell, eg: bash: Does Cygwin provide its own separate terminal? Or provide a command line executable that runs within Windows console? Or does it modify the base operation of Windows command shell in some way?

  • Does Cygwin install services that run all the time, even when the user is not doing any Cygwin-related activities? Or just dlls (and executables) that programs invoke only when needed?

Any other points to watch for in this vein? Thanks!

gwideman

Posted 2014-03-15T09:00:14.380

Reputation: 335

Answers

6

Cygwin works by providing a library, cygwin1.dll, that acts as the translation layer between POSIX and Linux APIs, and the corresponding Windows features. This way it does not need to modify the OS at all. (Cygwin programs, of course, have to be compiled as native Win32 .exe programs, simply linked against different libraries.)

Terminal-based programs can be run both ways: they can be run in the Windows console (where cygwin1.dll automatically translates printed VT100-like sequences into Windows console API functions), or they can be run in VT100-like terminal emulators like MinTTY, URxvt, or PuTTYcyg. (Cygwin usually comes with the former by default.)

Normally services aren't needed for regular operation, unless you install programs that are designed as services (e.g. the OpenSSH server daemon).


[Just for comparison: Interix, aka Services for Unix, works at a lower layer, by providing a "posix" subsystem that runs alongside the regular Win32 subsystem, directly on top of the low-level "Native" or "NT" APIs.

Still, neither the kernel nor other OS components need to be modified nor custom drivers installed, as both methods just add a translation layer in user space.]

user1686

Posted 2014-03-15T09:00:14.380

Reputation: 283 655

I'm curious, what benefits might be gained from the lower level access that Interix has to the OS/hardware compared with Cygwin? Or do they both have pretty much identical capabilities? – Hashim – 2018-03-02T05:06:24.757

Thank you for an answer that addresses my concerns, and provides several background details to substantiate it and put it in context. Well done. – gwideman – 2014-03-15T20:50:33.997