Mail Archives: djgpp/2005/01/21/10:11:02
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f
|
DomainKey-Signature: | a=rsa-sha1; q=dns; c=nofws;
|
| s=beta; d=gmail.com;
|
| h=received:message-id:date:from:reply-to:to:subject:mime-version:content-type:content-transfer-encoding;
|
| b=lvP6Fe/bNS+yvVWHC7EdG1ZGAgU5j7CR5PnUain+ZdYJEGaF3q4Ll8VnV/tVZrk54mCGWybv8hlU/VVnRWKuYkWB4bAjwzUdahqE3PbqZGId6NupZquwt85xk83kEpJf4MnNSzKWT4BpVschS2+Nw7rbH6DRTls5KyUOF3hnpEE=
|
Message-ID: | <d46153c40501210642184b3371@mail.gmail.com>
|
Date: | Fri, 21 Jan 2005 08:42:52 -0600
|
From: | Andrew Paulsen <andrew DOT paulsen AT gmail DOT com>
|
To: | djgpp AT delorie DOT com
|
Subject: | RE: ls.exe in execv
|
Mime-Version: | 1.0
|
Reply-To: | djgpp AT delorie DOT com
|
>> does anybody know if there is a solution for not hanging when run
>> execv()? it seems that running notepad.exe is fine, however, running
>> "ls.exe" compiled with djgpp will hangup the application. Here is the
>> the sample code.
>>
>> #include <windows.h>
>> #include <stdio.h>
>> int main() {
>> char ** environ=_environ;/**** SYSTEM DEFINED ENVIRONMENT POINTER */
>> int retval;
>>
>> /* this is OK
>> char *argv[] = {"C:\\WINDOWS\\SYSTEM32\\notepad.exe", NULL};
>> retval = execv("C:\\WINDOWS\\SYSTEM32\\notepad.exe", argv);
>> */
>>
>> /* this will hang
>> */
>> char *argv[] = {"C:\\bin\\ls.exe", "C:\\", NULL};
>> retval = execv("C:\\bin\\ls.exe", argv);
>>
>> printf("if successful, this should not be printed out\n");
>> if(retval == -1) {
>> fprintf(stderr, "ERROR: 'exec' failed\n");
>> perror("exec");
>> exit(-1);
>> }
>> exit(0);
>> }
I think there are a couple problems with this. First, you may not
want to destroy argv[] like that so I'd change it to a different name.
Second, why are you passing the path to ls in the argv[] parameter?
The following worked for me:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
int retval;
char *myArgv[] = {"C:\\", NULL};
retval = execv("C:\\djgpp\\bin\\ls.exe", myArgv);
printf("if successful, this should not be printed out\n");
if(retval == -1) {
perror("exec");
exit(-1);
}
exit(0);
}
Andrew
- Raw text -