delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/04/23/15:59:16

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Date: Thu, 23 Apr 2009 15:58:51 -0400
From: Christopher Faylor <cgf-use-the-mailinglist-please AT cygwin DOT com>
To: cygwin AT cygwin DOT com, ncokwqc02 AT sneakemail DOT com
Subject: Re: detecting program invocation from a symbolic link
Message-ID: <20090423195851.GA29258@ednor.casa.cgf.cx>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com, ncokwqc02 AT sneakemail DOT com
References: <14974-38810 AT sneakemail DOT com>
MIME-Version: 1.0
In-Reply-To: <14974-38810@sneakemail.com>
User-Agent: Mutt/1.5.16 (2007-06-09)
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Thu, Apr 23, 2009 at 07:18:40PM -0000, ncokwqc02 AT sneakemail DOT com wrote:
>I have some C++ code that runs from the command line in a console
>shell.  It is designed to behave differently depending on whether it
>was called directly by name or by a differently named symbolic link.
>This is easy to check under Unix because argv[0] contains the name of
>the first command line argument, which is either the executable name or
>the name of the link.
>
>This doesn't work under Windows, however, because argv[0] always
>contains the name of the program being called whether it is actually on
>the command line or via a link.
>
>Even symbolic links created using 'ln -s' under Cygwin behave this way.
>I'm wondering if there is a way around this problem.  In other words,
>any way for my C++ program to detect the name of the symbolic link if
>one was used to invoke the executable.

When a cygwin program B is run from a cygwin program A and cygwin
program B is a symlink to program C, then when C is eventually run its
argv[0] should be "B", like on UNIX.

None of this works when running B from a non-cygwin program like the
windows command prompt since the windows command prompt doesn't
understand cygwin symlinks.

So, AFAICT, Cygwin does like UNIX.  If you are not seeing this behavior
we need more details and a simple test case to reproduce the problem.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019