lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

LYNX-DEV Lynx won't launch


From: Kristin McNally
Subject: LYNX-DEV Lynx won't launch
Date: Mon, 30 Mar 1998 10:52:06 -0500

OS:  Windows NT 4.0
LYNX: version 2.8

I am trying to launch Lynx v2.8 from a parent process that redirects
Lynx's standard i/o to the parent's console window.  When the Lynx
process is created, it receives the redirected handles and sends this
error message to the parent's console:

        initscr( ): LINES=0 COLS=0: too small.

The Lynx process will launch fine from the parent process as long as it
launches with its own console... but if it has its own console, I cannot
redirect the std i/o.

Any suggestions or information will be greatly appreciated.

Kristin McNally
MOON Communications
address@hidden (preferred)
address@hidden

FYI:  The parent process main( ) function that is creating the Lynx
process:

/////////////// START CODE /////////////////////////////////
#include <windows.h>
#include <process.h>
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <direct.h>

const char * const LYNX_EXE = "c:\\lynx_w32\\lynx.exe";

void main(int argc, char * argv[])
{
    char szBuffer[_MAX_FNAME];
    BOOL fStatus;
    DWORD dwBytesRead;
    HANDLE hReadPipe;
    HANDLE hWritePipe;
    
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    SECURITY_ATTRIBUTES sa;
    SECURITY_DESCRIPTOR sd;
    LPSECURITY_ATTRIBUTES lpsa = NULL;
    CONSOLE_SCREEN_BUFFER_INFO coninfo;    
    
    // if on windows NT...
    InitializeSecurityDescriptor (&sd, SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE);
    
    // initialize Security Descriptor
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.bInheritHandle = TRUE;
    sa.lpSecurityDescriptor = &sd;
    lpsa = &sa;
    
    CreatePipe(&hReadPipe, &hWritePipe, lpsa, 1);

    wsprintf(szBuffer, "%s", LYNX_EXE );
    ZeroMemory( &si, sizeof(STARTUPINFO));
    si.cb = sizeof(STARTUPINFO);
    si.dwFlags = STARTF_USESTDHANDLES;
    si.hStdOutput = hWritePipe;

    si.hStdError = hWritePipe;

    // Change directory so Lynx can find everything it needs
    _chdir("c:\\lynx_w32");
    
     fStatus = CreateProcess(
        NULL,
        szBuffer,
        NULL,
        NULL,
        TRUE,
        DETACHED_PROCESS,
        NULL,
        NULL,
        &si,
        &pi);
    
    if (fStatus == FALSE)
    {
        printf("Can't create process: %d\n", GetLastError());
        return;
    }
    Sleep(200);

    fprintf(stdout, "Starting Loop\n");
    
    while(TRUE)
    {
        fStatus = ReadFile( hReadPipe, szBuffer, 1, &dwBytesRead, NULL);
        if (fStatus != TRUE)
        {
            break;
        }
        szBuffer[dwBytesRead] = '\0';;
        fprintf(stdout, "%s", szBuffer);
    }

    CloseHandle(hWritePipe);
    CloseHandle(hReadPipe);
    CloseHandle(pi.hProcess);
    system("pause");
}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]