Re: Install[] and command line args?
- To: mathgroup at smc.vnet.net
- Subject: [mg13448] Re: Install[] and command line args?
- From: kevinl (Kevin Leuthold)
- Date: Fri, 24 Jul 1998 01:45:35 -0400
- Organization: Wolfram Research, Inc.
- References: <6p6q98$5hv@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
lgy at newton.phys.washington.edu (Laurence Yaffe) writes: >Is there any way to pass command line arguments to an external program >(created with mcc) which will be started with Mathematica's Install[] ? >------------------------------------------------------------------------ >Laurence G. Yaffe yaffe at phys.washington.edu Department of Physics >University of Washington 1-206-543-3902 (fax: 1-206-543-9523) Laurence, Yes, you can pass command-line options to your external program, which I will show how to do below. The problem with using Install to do this is that Install tries to do some guessing of what program you are trying to launch - by putting quotes around the program in case there's a space in it, by looking down $Path for your program, and other things. This guessing means that passing command line arguments can sometimes confuse it and cause it to guess wrong. However, if you are willing to give up those features of Install, and simply use LinkLaunch to launch your program and call Install on the returned LinkObject, then you can pass command-line arguments. For example, let's say you have a program called "/usr/foo/addtwo", and you want to pass it command-line arguments. Below, as an example, I've modified the main function of addtwo.c to print out its arguments to stderr: #include <stdio.h> int main(int argc, char* argv[]) { int i; for( i=0; i<argc; i++){ fprintf( stderr, "%s\n", argv[i]); } return MLMain(argc, argv); } Then from Mathematica, to Install this program with the command -a, you could do this: In[1]:= link = LinkLaunch["/usr/foo/addtwo -a"] Out[1]= LinkObject[/usr/foo/addtwo -a, 1, 1] In[2]:= Install[link] Out[2]= LinkObject[/usr/foo/addtwo -a, 1, 1] or, more simply: In[1]:= link = Install[LinkLaunch["/usr/foo/addtwo -a"]]; Out[1]= LinkObject[/usr/foo/addtwo -a, 1, 1] Kevin Leuthold MathLink Group Wolfram Research