Solved

Using Perl system function to execute .exe file, getting error 32768

Posted on 2007-12-06
14
3,743 Views
Last Modified: 2013-12-25
Hi,
   I have a Perl script that runs in Microsoft IIS server as a CGI script, and does the following:

1) Reads stuff from the database,
2) Creates a plain text file to describe some data on the local disk (same folder)
3) and uses the "system" sub-routine to execute an external program that creates an image of the database data, like this:

my $error_code=system("<path to executable>  <parameters, including output image file name>");

However, the image does not show up on the resulting web page, and is never created on the disk -- the web page says Perl has an error of "32768". Also, what's interesting is that the plain text file DOES get created, but the image file doesn't, so it means Perl has no problems writing to disk, but cannot get the external executable to run and create the file...

Does anyone have idea idea what the error code 32768 means in Perl, and how to resolve this?
0
Comment
Question by:Envoy2064
  • 6
  • 3
  • 2
  • +2
14 Comments
 
LVL 18

Expert Comment

by:Morcalavin
ID: 20420334
my $error_code=system("<path to executable>  <parameters, including output image file name>");

Can you give more info on this line?  What is the executable path?  Are you escaping special characters \ $, etc
0
 

Author Comment

by:Envoy2064
ID: 20420350
It goes like this:

"d:/myfolder/myexe -Paramter1 d:/myfolder/outputfilename.png"
0
 

Author Comment

by:Envoy2064
ID: 20420386
the "/" instead of "\" should not create any problems...
0
 
LVL 18

Expert Comment

by:Morcalavin
ID: 20420459
Does the user that runs IIS have permission to execute programs?
0
 
LVL 84

Expert Comment

by:ozo
ID: 20420503
In a system call in DOS, "/" instead of "\\" can create problems
0
 
LVL 18

Assisted Solution

by:Morcalavin
Morcalavin earned 100 total points
ID: 20420544
This part probably works fine:
d:/myfolder/myexe

perl understands that / equals \ for this filesystem

This part probably bombs:
-Paramter1 d:/myfolder/outputfilename.png
myexe doesn't understand that / = \

Try
"d:/myfolder/myexe -Paramter1 d:\\myfolder\\outputfilename.png"
0
 

Author Comment

by:Envoy2064
ID: 20420609
ozo, Morcalvin...thanks -- i'll try it out tomorrow as the server is not available at the moment.

Yes, we configured the IIS to let it execute scripts and executables, and read/write both...do you have any advice on giving IIS the absolute minimum permission but also let the application write to disk?
0
U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

 
LVL 48

Accepted Solution

by:
Tintin earned 125 total points
ID: 20424179
It's not Perl that recognises forward or backslashes, it's the OS.  Windows recognises forward slashes just fine, it's the Windows command interpreter that doesn't like them.

As for the error code 32768, it's not Perl that would be generating that error, it will be the executable your are calling and/or IIS.
0
 

Author Comment

by:Envoy2064
ID: 20427059
hm, i tried the \\ code, and it still doesn't work...any ideas? :-(
0
 

Author Comment

by:Envoy2064
ID: 20427063
upped the point value to 450
0
 
LVL 28

Assisted Solution

by:FishMonger
FishMonger earned 100 total points
ID: 20429922
Try this:

# my @cmd = ('d:/myfolder/myexe', '-Paramter1', 'd:/myfolder/outputfilename.png');

my @cmd = ('d:\myfolder\myexe', '-Paramter1', 'd:\myfolder\outputfilename.png');
 

system(@cmd) == 0 or die "system @args failed: $?"

Open in new window

0
 
LVL 28

Expert Comment

by:FishMonger
ID: 20429946
system(@cmd) == 0 or die "system @args failed: $?"

should be
system(@cmd) == 0 or die "system @cmd failed: $?"

Also, I didn't test which path separator would be needed, so you may need to adjust that.
0
 
LVL 84

Assisted Solution

by:ozo
ozo earned 125 total points
ID: 20431182
what happens when it doesn't work?
what is the normal way for  d:/myfolder/myexe to deal with errors?
and are you sure the Perl code is getting to the system call?
0
 

Author Comment

by:Envoy2064
ID: 20442598
solved it...apparently there are DLL missing when I tested in via cmd.exe...
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
can not add ASP.NET to IIS 8 44
Cannot upload files above 1mb IIS7 11 39
React or Angular? 6 51
Can I exclude specific directory with icacle command? 3 25
Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now