Hi - I get different behavior than this running "shell" from a J-console
session running under emacs: control returns to the J session after the
spreadsheet starts up.  This is under Windows, which you appear to be
running.  Also, I get the same behavior under JQt.

However, I have seen the behavior you're reporting when I invoke a .bat
file.  For this reason, I wrote a little C module, called "createProcess",
to spin off a process and return.

The code for that follows, if you are interested.

Regards,

Devon
---
//* createProcess.cpp: create a process and return.

#include "stdafx.h"
#include "windows.h"
#include "shellapi.h"
#include <iostream> // cerr, endl, flush
#include <stdlib.h> // exit()

using namespace std;

#define BUFSZ 2048

int _tmain(int argc, wchar_t* argv[])
{
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"runas";

wchar_t args[BUFSZ]; args[0] = L'\0';
if (argc > 1)
{ shExecInfo.lpFile = argv[1];
if (argc > 2) wcscpy_s(args, BUFSZ, argv[2]);
for (int ii = 3; ii < argc; ii++)
{   wcscat_s(args, BUFSZ, L" \0"); wcscat_s(args, BUFSZ, argv[ii]);
}
args[wcslen(args)] = L'\0';
} else
{ shExecInfo.lpFile = L"foo";
}
shExecInfo.lpParameters = args;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_NORMAL;
shExecInfo.hInstApp = NULL;

ShellExecuteEx(&shExecInfo);
//WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
return 0;
}

On Fri, Dec 13, 2019 at 8:56 AM 'Mike Day' via Programming <
[email protected]> wrote:

> I've just tried firing up a spreadsheet from J,  and appear to find that
> J has to wait for
> the spreadsheet to be closed  before the JQT terminal session can proceed.
>
> Specifically, if I enter the following from the terminal:
>     shell_jtask_ 'c:/d/j901/user/temp/test1.ods'     NB. Open Office
> document
>
> the cursor hangs at that line until I close the spreadsheet cleanly or
> messily using
> taskmaster.
>
> Odd perhaps,  as shell is a cover for spawn:
> ''&$: :(spawn ('cmd /c ' , ]))
>
>
> and MSDOS help tells me that cmd/c terminates:
>
> "
>
> C:\Windows\System32>cmd/?
> Starts a new instance of the Windows command interpreter
>
> CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
>      [[/S] [/C | /K] string]
>
> /C      Carries out the command specified by string and then terminates
>
> "
>
>
> Not too important for me - just puzzling.
>
>
> Thanks,
>
>
> Mike
>
>
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>


-- 

Devon McCormick, CFA

Quantitative Consultant
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to