Running external process continously.. !!.. help plz

Hello frnds,
I have to run an external process.. continously.. ??
am not able to figure out.. what is best for me..
Should I run it.. it in a while loop.. with separate thread..?? as I dont know how long the process takes place?.. Then have to start process again..
if someone has tried it already.. or know how to proceed.. please let me know!!
Thanks in advance!!
gervini

What kind of process is it ?
Do you "have" to run only while your applicationruns
or after it has exited, too ?Its an .exe tool.. a kinda optimizer..
Well I am displaying.. a small frame.. with two
buttons.. START and STOP.. so I have to run it
until.. STOP is pressed..(and have to take care..
when STOP is pressed.. it should complete that
running process.. and then stops..)So.. obviously.. you.. run.. only.. one.. of.. these.. processes.. at.. once.., don'..t.. you.. ?..
Do you need to track when the process has finished (i.e. giving the user some feedback) ? If so, I'd suggest starting the process in a separate Thread, doing a waitFor() (don't forget to empty the process' outputstreams), and notifying your GUI when the Thread ends (i.e. when the child process has ended).
Furthermore, I suppose you'll need to keep a reference to the Process Object somewhere else if you want to be able to stop it (supposedly using destroy() or some command the process understands to the Process' System.in).
Therefore a while() loop seems to be right out, IMO. Unless you have to start the Process again as soon as it's finished, without any interaction from the user, which wouldn't quite seem to fit in the scenario you describe.

Similar Messages

  • RW-50004: Error code received when running external process.

    Hi,
    I am trying to install 11.5.10 on windows vista and receiveing following error.
    RW-50004: Error code received when running external process. Check log for details. Running Database Install Driver for VIS Instance
    When checked on the log file following is the error. Could anyone pls help me with this regard
    There was an error while running the command - c:\OracleApps\visdb\9.2.0\temp\VIS_erp\adrun9i.cmd APPS APPS
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    The process tried to write to a nonexistent pipe.
    RW-50010: Error: - script has returned an error: 1
    RW-50004: Error code received when running external process.
    "dbInstancecfg" file shows below error
    Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
    Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROCVIS))
    TNS-12541: TNS:no listener
    TNS-12560: TNS:protocol adapter error
    TNS-00511: No listener
    32-bit Windows Error: 2: No such file or directory
    Connecting to (ADDRESS=(PROTOCOL=TCP)(Host=erp.erp)(Port=1521))
    TNS-12541: TNS:no listener
    TNS-12560: TNS:protocol adapter error
    TNS-00511: No listener
    32-bit Windows Error: 61: Unknown error
    LSNRCTL for 32-bit Windows: Version 9.2.0.6.0 - Production on 13-JUL-2008 05:48:04
    Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
    Starting tnslsnr: please wait...
    TNS-12546: TNS:permission denied
    TNS-12560: TNS:protocol adapter error
    TNS-00516: Permission denied
    32-bit Windows Error: 5: Input/output error
    addlnctl.cmd exiting with status 3
    OpenSCManager failed
    adsvdlsn.cmd exiting with status 1002
    ERRORCODE = 1002 ERRORCODE_END
    .end std out.
    System error 1060 has occurred.
    The specified service does not exist as an installed service.
    .end err out.
    File c:\OracleApps\visdb\9.2.0\appsutil\install\VIS_erp\afmkinit_inst.cmd not instantiated in the current pass, this file will not be executed
    Executing script in InstantiateFile:
    c:\OracleApps\visdb\9.2.0\appsutil\install\VIS_erp\afmkinit.cmd
    script returned:
    Sun 07/13/2008
    05:48 AM
    1 file(s) copied.
    1 file(s) copied.
    1 file(s) copied.
    "afmkinit.cmd exiting with status 0"
    ERRORCODE = 0 ERRORCODE_END
    .end std out.
    .end err out.
    Skipping INSTE8_PRF
    Skipping INSTE8_APPLY
    [AutoConfig Error Report]
    The following report lists errors AutoConfig encountered during each
    phase of its execution. Errors are grouped by directory and phase.
    The report format is:
    <filename> <phase> <return code where appropriate>
    [SETUP PHASE]
    AutoConfig could not successfully execute the following scripts:
    Directory: c:\OracleApps\visdb\9.2.0\appsutil\install\VIS_erp
    adsvdlsn.cmd INSTE8_SETUP 1002
    AutoConfig is exiting with status 1

    Thanks for the update and the link was informational.
    Can I install following on windows vista? Pls confirm.
    Oracle® Applications 11i Release 10.2 Media Pack for
    Microsoft Windows (32-bit) No That's not possible, if you would like to use this machine for Applications then the OS needs to be changed or install vmware/Microsoft Virtual PC with a Certified Operating system to be able to use Applications.
    Thanks
    Ronald

  • Web pages containing flash run/scroll very slow, help plz

    hi guys,
    complete first timer on here so be gentle,
    i have a very annoying problem with flash player and my
    firefox web browser.
    what happens is,
    normal browsing is all ok with no problems, but as soon as a
    flash ad or anything with flash appears , it basically brings that
    web page to a stand still.
    meaning, you know when you use your scroll wheel under normal
    circumstances, to scroll down a page, well when the problem
    happens, the page just virtually freezes up, and scrolling just
    becomes impossible.
    i figured this out to be a flash player problem, when i was
    on IGN'S web site, and they have small ads appearing at regular
    intervals, and i noticed that as soon as ads appeared, the
    scrolling problem happened.
    so can anybody give me any ideas as to why or how to stop
    this happening.
    i have firefox 2.0.0.3 and flash player 9,0,28,0
    thanks for any help.

    aghh right,
    basically on both the links above, i have no problems,
    my problems are whenever there is flash ads or flash movie
    streams, my scrolling is so bad, i have to go back to the old
    fashion drag the bar.
    i did actually think i had cured it with a reinstall of flash
    player, but its back again.
    as much as it pains me to say this....iam real tempted to go
    back to the dreaded I.E.
    as my main interests are gaming, virtually all my sites i
    visit are every flash orientated, so to be honest, i dont know what
    to do.
    one thing for sure its dam annoying.

  • How to run shell script using External Process in Process Flow?

    Hi,
    We can run external process using Process flow.
    I would like to run shell script as external process in Process flow.
    Could any one please explain it?
    Thanks and regards
    Gowtham Sen.

    HI,
    As you said I tried this case. I got the following error. The script is running successfully while I tested at unix command prompt.
    The error is as follows..
    tarting Execution PFPS_SMPL_RUNSHELL
    Starting Task PFPS_SMPL_RUNSHELL
    Starting Task PFPS_SMPL_RUNSHELL:EXTERNALPROCESS
    /SOURCE_FILES/CollectFiles.sh: line 1: ls: command not found
    /SOURCE_FILES/CollectFiles.sh: line 1: wc: command not found
    /SOURCE_FILES/CollectFiles.sh: line 1: ls: command not found
    Completing Task PFPS_SMPL_RUNSHELL:EXTERNALPROCESS
    Starting Task PFPS_SMPL_RUNSHELL:EXTERNALPROCESS_1
    SQL*Plus: Release 10.1.0.2.0 - Production on Fri Sep 29 22:57:39 2006
    Copyright (c) 1982, 2004, Oracle. All rights reserved.
    ERROR:
    ORA-12545: Connect failed because target host or object does not exist
    Enter user-name: SP2-0306: Invalid option.
    Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
    where <logon> ::= <username>[<password>][@<connect_identifier>] | /
    Enter user-name: SP2-0306: Invalid option.
    Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
    where <logon> ::= <username>[<password>][@<connect_identifier>] | /
    SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
    Completing Task PFPS_SMPL_RUNSHELL:EXTERNALPROCESS_1
    Completing Task PFPS_SMPL_RUNSHELL
    Completing Execution PFPS_SMPL_RUNSHELL
    My scenario is---
    I am trying to return a file name from one shell script. I created a external process for that. After completion of this process, I am running another script which takes that file name and trying to create a external table. The both scripts are runnning successfully. But while I am trying to run using process flow, its not coming.
    And I am not getting the way to catch the output of external process and pass it as parameter as another external process.
    Any suggestions are welcome.
    Thanks and regards
    Gowtham Sen.

  • Running Two Process together!!.. second process does not execute!!

    Hello all,
    Am trying to run two process continously.. taking outputs.. from first process as input for second!! But second process should occur when first process is completed!!.. as it is moving files created by first process!!
    Process process1 = Runtime.getRuntime().exec(optimizer.exe);  //It creates some files in temp folder.. !!
    String another = System.getProperty("user.dir");
    String path = another + File.separator + "temp" + File.separator + "*.*"
    String script = "cmd /c move path d:/temp"
    Process process2 = Runtime.getRuntime().exec(script);process2 does not take place since process1 does not finished before executing that line.. so no files are there to move!!
    How to make stop my program for a while until first process is finished??
    Thanks!!
    gervini

    How can you figure out when optimizer is finished?
    Do you know how many files it will create? Will it
    t create all of them at once? Yes optimizer.exe creates 3 files at once..!!
    Then I have to move these files to different location..
    You're going to have
    to either be notified or do some polling to find out
    when it's ready for the second process. A simple
    example of this is a loop that checks the temp
    directory for files and proceeds once there are some
    with a sleep() in there some place so it doesn't kill
    the machine.How to keep checking for files then!! .. smething like this!!
    boolean exists = (new File("filename")).exists();
        if (exists) {
            // File or directory exists
        } else {
            // File or directory does not exist
        }

  • Run Time error!!!Help plz

    hi ..
    every time i run my application i get this error which i can't understand where exactly the error is
    can any one help plz
    )at javax.swing.JLayeredPane.paint(JLayeredPane.java:546
    )at javax.swing.JComponent.paintChildren(JComponent.java:498
    )at javax.swing.JComponent.paint(JComponent.java:669
    )at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:23
    :at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java
    )54
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:91
    )at java.awt.Container.paint(Container.java:960
    )at javax.swing.JFrame.update(JFrame.java:329
    )at sun.awt.RepaintArea.update(RepaintArea.java:337
    )at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:200
    )at java.awt.Component.dispatchEventImpl(Component.java:2663
    )at java.awt.Container.dispatchEventImpl(Container.java:1213
    )at java.awt.Window.dispatchEventImpl(Window.java:914
    )at java.awt.Component.dispatchEvent(Component.java:2497
    )at java.awt.EventQueue.dispatchEvent(EventQueue.java:339
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    )read.java:131
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    )ad.java:98
    )at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93
    )at java.awt.EventDispatchThread.run(EventDispatchThread.java:85
    this is part of the code:
      public void actionPerformed(ActionEvent e)
        FileInputStream fis = null;
        if (e.getSource() == add) //The ADD button.
          //User has not populated all the input fields.
          if(name.getText().equals("")|| address.getText().equals("")|| phone.getText().equals("")|| sex.getText().equals("")|| dob.getText().equals("")|| photo.getText().equals(""))
            JOptionPane.showMessageDialog(null, "Please fill in all the fields","Missing Fields",JOptionPane.INFORMATION_MESSAGE);
          else
            // save the new customer:
            try
              //1. take the customer's data and photo:
              int    userId          = Integer.parseInt(id.getText());
              String userName      = name.getText();
              String userAddress      = address.getText();
              String userPhone      = phone.getText();
              String userSex      = sex.getText();
              String userDateBirth      = dob.getText();
              //String userDateBirth=Date.parse(dob);
              String photoName      = photo.getText();
              String audioName=   audio.getText();
              File   file           = new File(photoName);
              int    fileLength      = (int)file.length();
              //2. Set the user's photo into the photoHolder:
              photoHolder.setVisible(false);
              photoHolder = null;
              comments.setVisible(false);
              comments = null;
              Icon[] custPhotos = {new ImageIcon(photoName)};
              JList photosList = new JList(custPhotos);
              photosList.setFixedCellHeight(100);
              photosList.setFixedCellWidth(80);
              photoHolder = new JPanel();
              photoHolder.add(photosList);
              makeComments();
              //3. Insert the data and photo into the database:
              if(fileLength > 0)
                fis = new FileInputStream(file);
                String query = " INSERT INTO CUSTOMER VALUES('"+userId+"', '"+ userName+ "', '"+ userAddress+ "', " +" '"+ userPhone+ "', '"+ userSex+ "', '"+ userDateBirth+ "', ?,?,? ) ";
                PreparedStatement pstmt = conn.prepareStatement(query);
                pstmt.setBinaryStream(1, fis, fileLength);
                  pstmt.setString(2,photoName);
                  pstmt.setString(3,audioName);
                pstmt.executeUpdate();
                comments.setText(userName+", added.");
              else
                String query = " INSERT INTO CUSTOMER (id, name, address, phone, sex, dob) VALUES('"+userId+"', '"+userName+"', '"+userAddress+"', '"+userPhone+"', '"+userSex+"', '"+userDateBirth+"') ";
                stat.executeUpdate(query);
                comments.setText("Customer saved without a photo.");
              backPanel.add(photoHolder);
              backPanel.add(comments);
              updateTable();
              //AddScroll();
            } //try
            catch (Exception ee)
               //The danger of putting creating the JOptionPane in here is that it will show the same message regardless of the error.
                JOptionPane.showMessageDialog(null, "Customers CPR already exits!!Please enter another CPR","Invalid",JOptionPane.INFORMATION_MESSAGE);
              System.out.println("Caught exception in add action: " + ee);
              ee.printStackTrace();
            } //catch
          } //if
        }//add button

    hi...
    i got where the error is..
    now i have another problem..
    Connecting to database..
    Valid Login
    Caught updateTable exception: java.lang.ArrayIndexOutOfBoundsException
    java.lang.ArrayIndexOutOfBoundsException
    at UtilityMethods.updateTable(UtilityMethods.java:305)
    (which is this line:
    tableData[currentRow] = fieldString;)-----> i did this because one of the fields will be a Date and the others are strings
    at UtilityMethods.updateTable(UtilityMethods.java:429)
    at Login.validLogin(Login.java:114)
    at Login.actionPerformed(Login.java:80)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:14
    50)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra
    ctButton.java:1504)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
    .java:378)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
    istener.java:216)
    at java.awt.Component.processMouseEvent(Component.java:3715)
    at java.awt.Component.processEvent(Component.java:3544)
    at java.awt.Container.processEvent(Container.java:1164)
    at java.awt.Component.dispatchEventImpl(Component.java:2593)
    at java.awt.Container.dispatchEventImpl(Container.java:1213)
    at java.awt.Component.dispatchEvent(Component.java:2497)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
    at java.awt.Container.dispatchEventImpl(Container.java:1200)
    at java.awt.Window.dispatchEventImpl(Window.java:914)
    at java.awt.Component.dispatchEvent(Component.java:2497)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:131)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:98)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
    this is the code :
    void updateTable()
          ResultSet results = null;
          ResultSet results1 = null;
          try
            //Get the number of rows in the table so we know how big to make the data array..
            int rowNumbers  = 0;
            int columnCount = 6;
            results = stat.executeQuery("SELECT COUNT(*) FROM CUSTOMER ");
            if(results.next())
              rowNumbers = results.getInt(1);
            } //if
            if(rowNumbers == 0)
            rowNumbers = 1;
            tableData = new String[rowNumbers][columnCount];
            //Initialize the data array with "" so we avoid possibly having nulls in it later..
            for(int i =0;i<tableData.length;i++)
              for(int j=0;j<tableData[0].length;j++)
              tableData[i][j] = "";
            //Populate the data array with results of the query on the database..
            int currentRow = 0;
             SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
            results1 = stat.executeQuery("SELECT * FROM CUSTOMER ORDER BY ID");
            while (results1.next())
              for(int i = 0; i < columnCount; i++){
              Object field = results1.getObject(i + 1);
              // actually this next line should be put outside your loop so you don't keep creating this object
              // or whatever format you want
              String fieldString;
              if (field instanceof Date)
                     fieldString = sdf.format((Date) field);
                     else
                          fieldString = field.toString();
                          tableData[currentRow] = fieldString;
    //tableData[currentRow][i] = results1.getString(i + 1);
    currentRow++;
    } //while
    }//for
    final String[] colName = { "CPR", "Name", "Address", "Phone", "Sex", "Date OF Birth" };
    TableModel pageModel = new AbstractTableModel()
    public int getColumnCount()
    return tableData[0].length;
    } //getColumnCount
    public int getRowCount()
    return tableData.length;
    } //getRowCount
    public Object getValueAt(int row, int col)
    return tableData[row][col];
    } //getValueAt
    public String getColumnName(int column)
    return colName[column];
    } //getcolName
    public Class getColumnClass(int col)
    return getValueAt(0, col).getClass();
    } //getColumnClass
    public boolean isCellEditable(int row, int col)
    return false;
    } //isCellEditable
    public void setValueAt(String aValue, int row, int column)
    tableData[row][column] = aValue;
    } //setValueAt
    //dataTable.setValue( new JScrollBar(JScrollBar.HORIZONTAL), 2,1 );
    }; //pageModel
    //Create the JTable from the table model:
    JTable dataTable = new JTable(pageModel);
    // dataTable.setModel();

  • Running an Interactive External Process

    I am trying to run an Interactive external process.
    This process is an exe program.
    When I run this program it prompts for a password.
    Here the reader.read() is never gets to a ready state.
    Following is a snippet of the program
    public class StreamGobler extends Thread{
    private InputStream is;
    private OutputStream os;
    private String pwd;
    private int waitState = 1;
    public StreamGobler(InputStream _is, OutputStream _os, String _pwd)   {
            this.is = _is;
            this.os = _os;
            this.pwd = _pwd;
         public void run() {
            BufferedReader reader = null;
            BufferedWriter writer = null;
            try {
                reader = new BufferedReader(new InputStreamReader(is));
                writer = new BufferedWriter(new OutputStreamWriter(os));
                String msg = "";
                int c=0;
                //This is where my program get blocked it never enters the while block and eventually timesout               
                while ((c = reader.read()) != -1) {            
         msg += (char) c;
         if (waitState == 1) {                 
            if(msg != null && msg.toLowerCase().indexOf("password") != -1){
         writer.write(pwd+ "\n");                    writer.flush();                         waitState++;                    msg = "";
                       }else{
           buffer.append((char) c);              
            catch (Exception ee) {}       
            finally {
                try {
         if (reader != null)
             reader.close();
         if (writer != null)
             writer.close();
               } catch (Exception ee) {}
    Message was edited by:
            ff1012                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    You need to check with the vendor of this unspecified application to see if they have an api for remote control. Perhaps they have an ActiveX interface? If not, I've had very good luck with an application called AutoIT - https://www.autoitscript.com/site/autoit/
    There are LabVIEW examples on the forum.

  • Starting New process (continous) from another java process

    Hi,
    I am running into a trouble in starting a new java process (continous process it is like daemon process ) from another java process.
    Eg;
    Caller.java runs on one JVM instance, from this Caller.java i need to start a daemon java process ConnectionManager.java (My caller.java should have to know whether ConnectionManager was successfully started as a seperate java process or not)
    Also Caller.java has to stop ConnectionManager.java(which is running as seperate process)
    Any help would be appeciated.
    Thank you very much.

    First of all the design is unusual. Your issue is basically intercommunication between two processes written in java. There are various ways to do that:
    1. Use Persistent system(File/Database) : Easiest but have external dependency.
    2. Use RPC calls both JVM,s little bit complex.
    3. Run new JVM in debug mode and connect on bootstrap port.
    4. Communicate using Sockets.
    Whatever suits you...

  • How to pass BindVariables to External Process (Workflow)

    I build a shell script (unix) which accepts a command line parameter .... a "filename"
    The "filename" is a dynamic name!
    The workflow is build with a custom input parameter "filename" ... which I want to pass to an external process, which calls this shell script:
    How can I do that ?
    ExtProcess:
    Command : Val=/bin/ksh
    Parameter_List : Val=":/home/bin/myscript.sh:${Task.Input}:"
    (Binding ":Filename" replaces the whole value, sorry)
    Succes_Threshold: Val=0
    Script : Val="" , Binding=":Filename"
    ... does not pass the value of ":Filename"
    Script : Val="/tmp/fixed.name"
    ... works only with fixed names
    what I really need is something simple like:
    Parameter_list : Val=":/home/bin/myscript.sh:${Parameter.Filename}:FIXPARAM:"
    or Script : Val=":${Parameter.Filename}:${Parameter.Param2}:${Parameter.Pram3}"
    ... similar problem I had with FTP, I found no way to pass dynamic filenames or other parameters (except LOCATION Parameters)
    ... similar problem I had with EMAIL I found no way to include PARAMETERS to the mail body (except to replace the whole body by 1 parameter)
    Is there a solution or is in current version OWB 9.2 only "static" parameters supported.
    I also was missing to pass OUTPUT-parameters for example of a TRANSFORMation,
    I also was missing some urgent SYSTEM-parameters for self identification of the process(like "SYSTEM.TASK_NAME" "SYSTEM.EXECUTION_AUDIT_ID" "SYSTEM.ITEM_KEY" )
    Thanks for all hints and best regards
    Martin

    Actually... After further investigation this may not be needed. I'd be interested in the answer, to understand what is possible.
    The concept of passing parameters in the OWB workflow designer is rather limited, in my humble opinion. Sure, you can designate a "start" sequence that takes a parameter and you can pass that to mappings/transformations but there is no chance for feedback. Ie, if I manually (or through some rigged script) execute the flow with the "PARAMETER" then it will be able to bind. What about mid-flow. IE, select the record to be "processed", then call a "flow" with that as a parameter.
    Am I mistaken? Is there a way to expose the "out" parameters of a mapping, or the return of a "transformation function" as "OUTS" in the process flow.
    Of course, in a world where everything is OWB and in the DB one can leave data in tables, and pick it up on the other mappings. HOWEVER, most BI systems involve external retrievals, etc. that need a bit more "intelligence" then "run and return 1,2,3" . :)
    Hope this is helpful for product feedback. If I'm mistaken on the WF capabilities please clue me in. :)
    btw, I'm an OWB fan, certainly. The progress over the past two years has been excellent.

  • S.O.S PROBLEMS COMUNICANTING EXTERNAL PROCESSES IN JAVA UNDER LINUX

    I've programmed a little program in C called "cinterpreter" which works like
    an interpreter, when it launches it shows a welcome message to the display
    (standart output), then is always waiting for strings from the keyboard
    showing the length of the input strings until the "quit" string is received,
    in that case the C program named "cinterpreter" finish, here we can see the
    code:
    # include <stdio.h>
    # include <string.h>
    # include <stdlib.h>
    char presentacion[8][80] = {
    " ||||||||||||||||||\n",
    " --- Welcome to Maude ---\n",
    " ||||||||||||||||||\n",
    " Maude version 1.0.5 built: Apr 5 2000 15:56:52\n",
    " Copyright 1997-2000 SRI International\n",
    " Thu Aug 9 13:40:25 2001\n",
    " \n",
    " \n"};
    void longitud(char * cadena)
    int t;
    for(t=0;t<3;t++)
    printf("MAUDE_OUT> la cadena %s tiene %d caracteres\n",cadena,strlen(cadena));
    fflush(stdout);
    int main()
    char cadena[80];
    int i;
    char ch;
    for(i=0;i<8;++i) printf("%s",presentacion);
    printf("\n");
    fflush(stdout);
    do {
    printf("Press any key to continue\n");
    scanf("%c",&ch);
    printf("%c\n",ch);
    fflush(stdout);
    }while (ch != 'q');
    printf("\n");
    while( strcmp(cadena,"quit") !=0)
    printf("\nMAUDEENTRADA>");
    fflush(stdout);
    scanf("%s",cadena);
    longitud(cadena);
    I'm intereted in running this program, control it's standart input and
    starndart output through a java program through the Runtime , process class
    and the correponding methods like "exec", getInputStream, getOutputStream,
    getErrorStream, the question is that I do not Know what I'm doing wrongly but
    I don't get what I want, I'm interested in sending input to the C subprocess
    thorugh its stdin getting it by getoutputStream method, and then read its
    answer from its stdout getting it by getoutputStream, then question is that I
    can sent de first string and read the first answer but I can't repeat it
    again, and I would like to begin a dialog with the subprocess so I need to
    send many messages and receive its answer to it, but many times, not just one,
    by the moment I got it but just one, if any body can help with this please
    answer the question or send any answer to the next adresses
    e-mail:
    [email protected]
    [email protected]
    *************** java code **********************
    import java.io.*;
    public class mioss {
    static String proceso = "/bin/cinterprete";
    static Process p = null;
    //--------- input writting method -----------
    static void escribe(OutputStream procesoescribe, String s) {
    BufferedWriter laentrada = new BufferedWriter(new
    OutputStreamWriter(procesoescribe));
    try{
    laentrada.write(s + "\n");
    laentrada.flush();
    }catch(IOException e) {System.out.println("error de escritura");}
    //----------- output reading method ---------------
    static void leesalida(InputStream procesosalida){
    String l;
    BufferedReader lasalida = new BufferedReader(new
    InputStreamReader(procesosalida));
    try{
    while ((l = lasalida.readLine()) != null){
    System.out.println(l);
    } catch(IOException e) {System.out.println("error de readline");}
    //------------- reading error method --------------------
    static void leerror(Process p){
    String l;
    BufferedReader elerror = new BufferedReader(new
    InputStreamReader(p.getErrorStream()));
    try{
    while ((l = elerror.readLine()) != null){
    System.out.println(l);
    elerror.close();
    } catch(IOException e) {System.out.println("error de readline");}
    //--------------- principal method main -------------------------
    static Process proc = null;
    public static void main(String [] Args) {
    try{
    Runtime r = Runtime.getRuntime();
    proc = r.exec(proceso);
    escribe(proc.getOutputStream(),"map(+2)[3,3]");
    leesalida(proc.getInputStream());
    escribe (proc.getOutputStream(),"map(*3)[2,2]");
    leesalida(proc.getInputStream());
    }catch(Exception e) {System.out.println("error de ejecucion del
    proceso");}
    System.out.println("THE END OF THE PROGRAM");

    The problem is with the leesalida method.
    There you are reading form the output sream of the process usingBufferedReader.readLine.
    readLine returns null only when it gets to the end of the stream, or here the stream ends only when the external processes ends.
    You can modify your code like this:
    public class mioss {
        static String proceso = "cinterprete";
        static Process p = null;
        //--------- input writting method -----------
        static void escribe(OutputStream procesoescribe, String s) {
         BufferedWriter laentrada = new BufferedWriter(new
             OutputStreamWriter(procesoescribe));
         try{
             laentrada.write(s + "\n");
             laentrada.flush();
         }catch(IOException e) {System.out.println("error de escritura:" + e);}
        //----------- output reading method ---------------
        static void leesalida(InputStream procesosalida, int nLines){
         String l;
         BufferedReader lasalida = new BufferedReader(new
             InputStreamReader(procesosalida));
         try{
             while(nLines-- > 0) {
              l = lasalida.readLine();
                    System.out.println("from java:\t" + l);
         } catch(IOException e) {System.out.println("error de readline");}
        //------------- reading error method --------------------
        static void leerror(Process p){
         String l;
         BufferedReader elerror = new BufferedReader(new
             InputStreamReader(p.getErrorStream()));
         try{
             while ((l = elerror.readLine()) != null){
                    System.out.println(l);
             elerror.close();
         } catch(IOException e) {System.out.println("error de readline");}
        //--------------- principal method main -------------------------
        static Process proc = null;
        public static void main(String [] Args) {
         try{
             Runtime r = Runtime.getRuntime();
             proc = r.exec(proceso);
             leesalida(proc.getInputStream(), 9);
             escribe(proc.getOutputStream(),"first");
             leesalida(proc.getInputStream(), 4);
             System.out.println("Done first !\n");
             escribe (proc.getOutputStream(),"second");
             leesalida(proc.getInputStream(), 4);
             System.out.println("Done second !\n");
         }catch(Exception e) {System.out.println("error de ejecucion del proceso");}
         System.out.println("THE END OF THE PROGRAM");
    } Regards,
    Iulian

  • My MacBook Pro won't go beyond a white screen, after I pushed the restart button. How can I get it to a login? I have routinely backed it up, but don't know how to bring that up, nor if I have a boot file on that external disk. Help!

    My MacBook Pro won't go beyond a white screen, after I pushed the restart button. How can I get it to a login? I have routinely backed it up, but don't know how to bring that up, nor if I have a boot file on that external disk. Help!

    Take each of these steps that you haven't already tried. Stop when the problem is resolved.
    To restart an unresponsive computer, press and hold the power button for a few seconds until the power shuts off, then release, wait a few more seconds, and press it again briefly.
    Step 1
    The first step in dealing with a startup failure is to secure the data. If you want to preserve the contents of the startup drive, and you don't already have at least one current backup, you must try to back up now, before you do anything else. It may or may not be possible. If you don't care about the data that has changed since the last backup, you can skip this step.
    There are several ways to back up a Mac that is unable to start. You need an external hard drive to hold the backup data.
    a. Start up from the Recovery partition, or from a local Time Machine backup volume (option key at startup.) When the OS X Utilities screen appears, launch Disk Utility and follow the instructions in this support article, under “Instructions for backing up to an external hard disk via Disk Utility.” The article refers to starting up from a DVD, but the procedure in Recovery mode is the same. You don't need a DVD if you're running OS X 10.7 or later.
    b. If Step 1a fails because of disk errors, and no other Mac is available, then you may be able to salvage some of your files by copying them in the Finder. If you already have an external drive with OS X installed, start up from it. Otherwise, if you have Internet access, follow the instructions on this page to prepare the external drive and install OS X on it. You'll use the Recovery installer, rather than downloading it from the App Store.
    c. If you have access to a working Mac, and both it and the non-working Mac have FireWire or Thunderbolt ports, start the non-working Mac in target disk mode. Use the working Mac to copy the data to another drive. This technique won't work with USB, Ethernet, Wi-Fi, or Bluetooth.
    d. If the internal drive of the non-working Mac is user-replaceable, remove it and mount it in an external enclosure or drive dock. Use another Mac to copy the data.
    Step 2
    If the startup process stops at a blank gray screen with no Apple logo or spinning "daisy wheel," then the startup volume may be full. If you had previously seen warnings of low disk space, this is almost certainly the case. You might be able to start up in safe mode even though you can't start up normally. Otherwise, start up from an external drive, or else use the technique in Step 1b, 1c, or 1d to mount the internal drive and delete some files. According to Apple documentation, you need at least 9 GB of available space on the startup volume (as shown in the Finder Info window) for normal operation.
    Step 3
    Sometimes a startup failure can be resolved by resetting the NVRAM.
    Step 4
    If a desktop Mac hangs at a plain gray screen with a movable cursor, the keyboard may not be recognized. Press and hold the button on the side of an Apple wireless keyboard to make it discoverable. If need be, replace or recharge the batteries. If you're using a USB keyboard connected to a hub, connect it to a built-in port.
    Step 5
    If there's a built-in optical drive, a disc may be stuck in it. Follow these instructions to eject it.
    Step 6
    Press and hold the power button until the power shuts off. Disconnect all wired peripherals except those needed to start up, and remove all aftermarket expansion cards. Use a different keyboard and/or mouse, if those devices are wired. If you can start up now, one of the devices you disconnected, or a combination of them, is causing the problem. Finding out which one is a process of elimination.
    Step 7
    If you've started from an external storage device, make sure that the internal startup volume is selected in the Startup Disk pane of System Preferences.
    Start up in safe mode. Note: If FileVault is enabled in OS X 10.9 or earlier, or if a firmware password is set, or if the startup volume is a software RAID, you can’t do this. Post for further instructions.
    Safe mode is much slower to start and run than normal, and some things won’t work at all, including wireless networking on certain Macs.
    The login screen appears even if you usually log in automatically. You must know the login password in order to log in. If you’ve forgotten the password, you will need to reset it before you begin.
    When you start up in safe mode, it's normal to see a dark gray progress bar on a light gray background. If the progress bar gets stuck for more than a few minutes, or if the system shuts down automatically while the progress bar is displayed, the startup volume is corrupt and the drive is probably malfunctioning. In that case, go to Step 11. If you ever have another problem with the drive, replace it immediately.
    If you can start and log in in safe mode, empty the Trash, and then open the Finder Info window on the startup volume ("Macintosh HD," unless you gave it a different name.) Check that you have at least 9 GB of available space, as shown in the window. If you don't, copy as many files as necessary to another volume (not another folder on the same volume) and delete the originals. Deletion isn't complete until you empty the Trash again. Do this until the available space is more than 9 GB. Then restart as usual (i.e., not in safe mode.)
    If the startup process hangs again, the problem is likely caused by a third-party system modification that you installed. Post for further instructions.
    Step 8
    Launch Disk Utility in Recovery mode (see Step 1.) Select the startup volume, then run Repair Disk. If any problems are found, repeat until clear. If Disk Utility reports that the volume can't be repaired, the drive has malfunctioned and should be replaced. You might choose to tolerate one such malfunction in the life of the drive. In that case, erase the volume and restore from a backup. If the same thing ever happens again, replace the drive immediately.
    This is one of the rare situations in which you should also run Repair Permissions, ignoring the false warnings it may produce. Look for the line "Permissions repair complete" at the end of the output. Then restart as usual.
    Step 9
    If the startup device is an aftermarket SSD, it may need a firmware update and/or a forced "garbage collection." Instructions for doing this with a Crucial-branded SSD were posted here. Some of those instructions may apply to other brands of SSD, but you should check with the vendor's tech support.  
    Step 10
    Reinstall the OS. If the Mac was upgraded from an older version of OS X, you’ll need the Apple ID and password you used to upgrade.
    Step 11
    Do as in Step 9, but this time erase the startup volume in Disk Utility before installing. The system should automatically restart into the Setup Assistant. Follow the prompts to transfer the data from a Time Machine or other backup.
    Step 12
    This step applies only to models that have a logic-board ("PRAM") battery: all Mac Pro's and some others (not current models.) Both desktop and portable Macs used to have such a battery. The logic-board battery, if there is one, is separate from the main battery of a portable. A dead logic-board battery can cause a startup failure. Typically the failure will be preceded by loss of the settings for the startup disk and system clock. See the user manual for replacement instructions. You may have to take the machine to a service provider to have the battery replaced.
    Step 13
    If you get this far, you're probably dealing with a hardware fault. Make a "Genius" appointment at an Apple Store, or go to another authorized service provider.

  • Authorizations setting for running the process chain

    Hai
    Iam planning to run the process chain for loading the data into ODS. But i dont have authorization for it.
    so what are the authorizations i need to run the process chain in my system. And how can i set all those authorizations to my user-id.  I have all authorization rights .
    Pls let me knw
    kumar

    Hi,
    Authorizations for Process Chains
    Use
    You use authorization checks in process chain maintenance to lock the process chain, and the processes of the chain, against actions by unauthorized users.
    ·        You control whether a user is allowed to perform specific activities.
    ·        You control whether a user is allowed to schedule the processes in a chain.
    The authorization check for the processes in a chain runs when the system performs the check. This takes place upon scheduling or during synchronous execution. The check is performed in display mode. The check is performed for each user that schedules the chain; it is not performed for the user who executes the chain. The user who executes the chain is usually the BI background user. The BI background user automatically has the required authorizations for executing all BI process types. In attribute maintenance for the process chain, you can determine the user who is to execute the process chain.
    See also: Display/Maintenance of Process Chain Attributes ®  Execution User.
    Features
    For the administration processes that are bundled in a process chain, you require authorization for authorization object S_RS_ADMWB.
    To work with process chains, you require authorization for authorization object S_RS_PC. You use this authorization object to determine whether process chains can be displayed, changed or executed, and whether logs can be deleted. You can use the name of the process chain as the basis for the restriction, or restrict authorizations to chains using the application components to which they are assigned.
    Display/Maintain Process Chain Attributes
    Use
    You can display technical attributes, display or create documentation for a process chain, and determine the response of process chains during execution.
    Features
    You can display or maintain the following attributes for a process chain:
    Process Chain ® Attribute ® ...
    Information
    Description
    ( Rename)
    You can change the name of the process chain.
    Display Components
    Display components are the evaluation criterion in the process chain maintenance. Assigning the process chains to display components makes it easier to access the chain you want.
    To create a new display component, choose Assign Display Components in the input help window and assign a technical name and description for the display component in the Display Grouping dialog box that appears.
    Documents
    You can create and display documents for a process chain.
    For more information, see Documents.
    Last Changed By
    Displays the technical attributes of the process chain:
    ·        When it was last changed and who by
    ·        When it was last activated and who by
    ·        Object directory entry
    Evaluation of Process Status
    If you set this indicator, all the incorrect processes in this chain and in the overall status of the run are evaluated as successful; if you have scheduled a successor process upon error or always.
    The indicator is relevant when using metachains: Errors in the processes of the subchains can be evaluated as “unimportant” for the metachain run. The subchain is evaluated as successful, despite errors in such processes of the subchain. If, in the metachain, the successor of the subchain is scheduled upon success, the metachain run continues despite errors in “unimportant” processes of the subchain.
    Mailing and alerting are not affected by this indicator and are still triggered for incorrect processes if they have an upon error successor.
    Polling Indicator
    With this indicator you can control the response of the main process for distributed processes. Distributed processes, such as the load process, are characterized as having different work processes involved in specific tasks.
    With the polling indicator you determine whether the main process needs to be kept until the actual process has ended.
    By selecting the indicator:
    -         A high level of process security is guaranteed, and
    -         External scheduling tools can be provided with the status of the distributed processes.
    However, the system uses more resources; and a background process is required.
    Monitoring
    With the indicator in the dialog box Remove Chain from Automatic Monitoring?, you can specify that a process chain be removed from the automatic monitoring using CCMS.
    By default CCMS switches on the automatic process chain monitoring.
    For more information about the CCMS context Process Chains, see the section BW Monitor in CCMS.
    Alerting
    You can send alerts using alert management when errors occur in a process chain.
    For more information, see Send Alerts for Process Chains.
    Background Server
    You can specify here on which server or server group all of the jobs of a chain are scheduled. If you do not make an entry, the background management distributes the jobs between the available servers.
    Processing Client
    If you use process chains in a client-dependent application, you can determine here in which client the chain is to be used. You can only display, edit, schedule or execute the chain in this client.
    If you do not maintain this attribute, you can display, edit, schedule or execute the process chain in all clients.
    Process variants of type General Services that are contained in a process chain with this attribute set will only be displayed in the specified client.
    This attribute is transported. You can change it by specifying an import client during import. You must create a destination to the client set here in the target system for the import post processing (transaction RSTPRFC)  The chain is activated after import and scheduled, if necessary, in this client.
    Execution User
    In the standard setting a BI background user executes the process chain (BWREMOTE).
    You can change the default setting so that you can see the user that executes the process chain and therefore the processes, in the Job Overview. You can select the current dialog user who schedules the process chain job, or specify a different user.
    The setting is transported.
    The BI background user has all the necessary authorizations to execute all BI process types. Other users must assign themselves these authorizations so that authorization errors do not occur during processing.
    Job Priority
    You use this attribute to set the job priority for all of the jobs in a process chain.
    Hareesh

  • 'External process-0130' Inspection in QM?

    Hi Team,
    Requesting your valuable help for below scenario.
    Step 1: Receiving the material(M1) in GR stage from 'vendor1' - 01 inspection active with one operation(op10-Visual inspection) in Inspection plan .If material ok it should be sent to External process.
    Step 2 : Sending received '(M1) material' to External processing to 'vendor2' through P.O
    Step3: Recieving the 'processed material' M1 material and Inspection
    As per SCN links, I under stood that '0130 inspection type' to be used.
    Q1:Prefered tick mark for 0130 / 01 ?
    Q2:Where 0130 insp.type should assigned? is it required to assign in any
    Q3:If preferd tick put to one of 01/ 0130 inspection type-Automatic insp.lot for 2nd insp.type will not be created?
    Help me out with the SAP-QM-best practice
    Regards,
    Karthik(Trainee-SAP-QM)

    Hi Sai,
    Nitin has correctly suggested the best standard SAP approach you should adopt. In case if only activating "01" is acceptable to business it will solve your case. It's easy to implement, maintain, error-free and scalable.
    Paralelly (if at all its required..), you can explore further on the custom approach like below -
    a) Activate insp type "01" and "0130" for the relevant materials. Do not flag any insp types as "PreferredInsTyp".
    b) Create a custom table to maintain a combination like Material + Insp Type + Insp Plan. Example below -
    M1 - 01 - IP01
    M1 - 0103 - IP02
    c) During Goods Receipt, user exit/BADI should if the PO is Subcontractor PO (Item Cat L) or not. If Subcontracting PO, then it should allocate the insp type 0130, else it should assign insp type "01" for all normal PO, or Sch Agr, etc.
    d) It should first validate how many inspection plans for the concerned material is 'Active" for the usage "5". Now check form the Z-table if for the same material, Z-table has one active insp plan added. Then allocate the insp plan to the inspection lot. There can be a chance that there are more than one active insp plans for same usage available and in Z-table a plan is available which is no more active, then the program should not allocate any insp plans, and the inspection lot status should be "CRTD". Same is the case if there is no active inspection plan available and added in Z-table for the material.
    e) In case if you wish to have one more round of check at "Vendor Level" on the selection of inspection plan, you can extend this Z-table with Vendor too!!. Then the Ztable will look like below -
    M1 - 01 - V1 - IP01
    M1 - 01 - V2 - IP01
    M1 - 0130 - V1 - IP03
    M2 - 0130 - V2 - IP04...
    Please do not adopt a custom approach, just to try out fancy things as they are difficult to implement, complexity gets higher, lots of codings involved, lots of testing required and difficult to maintain in the long run. Moreover there should be a significant business benefit in it and everyone should be aligned to take a decision to go with such custom approach. These are just my thoughts!!
    Thanks,
    Arijit
    Message was edited by: Arijit Banerjee

  • Running java process in a while loop using Runtime.exec() hangs on solaris

    I'm writting a multithreaded application in which I'll be starting multiple instances of "AppStartThread" class (given below). If I start only one instance of "AppStartThread", it is working fine. But if I start more than one instance of "AppStartThread", one of the threads hangs after some time (occasionaly). But other threads are working fine.
    I have the following questions:
    1. Is there any problem with starting a Thread inside another thread?. Here I'm executing the process in a while loop.
    2. Other thing i noticed is the Thread is hanging after completing the process ("java ExecuteProcess"). But the P.waitFor() is not coming out.
    3. Is it bcoz of the same problem as given in Bug ID : 4098442 ?.
    4. Also java 1.2.2 documentation says:
    "Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock. "
    I'm running this on sun Solaris/java 1.2.2 standard edition. If any of you have experienced the same problem please help me out.
    Will the same problem can happen on java 1.2.2 enterprise edition.?
    class AppStartThread implements Runnable
    public void run()
    while(true)
    try
    Process P=Runtime.getRuntime().exec("java ExecuteProcess");
    P.waitFor();
    System.out.println("after executing application.");
    P.destroy();
    P = null;
    System.gc();
    catch(java.io.IOException io)
    System.out.println("Could not execute application - IOException " + io);
    catch(java.lang.InterruptedException ip)
    System.out.println("Could not execute application - InterruptedException" + ip);
    catch (Exception e)
    System.out.println("Could not execute application -" + e.getMessage());

    I'm writting a multithreaded application in which I'll
    be starting multiple instances of "AppStartThread"
    class (given below). If I start only one instance of
    "AppStartThread", it is working fine. But if I start
    more than one instance of "AppStartThread", one of the
    threads hangs after some time (occasionaly). But other
    threads are working fine.
    I have the following questions:
    1. Is there any problem with starting a Thread inside
    another thread?. Here I'm executing the process in a
    while loop.Of course this is OK, as your code is always being run by one thread or another. And no, it doesn't depend on which thread is starting threads.
    2. Other thing i noticed is the Thread is hanging
    after completing the process ("java ExecuteProcess").
    But the P.waitFor() is not coming out.This is a vital clue. Is the process started by the Runtime.exec() actually completing or does the ps command still show that it is running?
    3. Is it bcoz of the same problem as given in Bug ID :
    4098442 ?.
    4. Also java 1.2.2 documentation says:
    "Because some native platforms only provide limited
    ed buffer size for standard input and output streams,
    failure to promptly write the input stream or read the
    output stream of the subprocess may cause the
    subprocess to block, and even deadlock. "These two are really the same thing (4098442 is not really a bug due to the reasons explained in the doc). If the program that you are exec'ing produces very much output, it is possible that the buffers to stdout and stderr are filling preventing your program from continuing. On Windows platforms, this buffer size is quite small (hundreds of characters) while (if I recall) on Solaris it is somewhat larger. However, I have seent his behavior causing problem on Solaris 8 in my own systems.
    I once hit this problem when I was 'sure' that I was emitting no output due to an exception being thrown that I wasn't even aware of - the stack trace was more than enough to fill the output buffer and cause the deadlock.
    You have several options. One, you could replace the System.out and System.err with PrintStream's backed up by (ie. on top of) BufferedOutputStream's that have large buffers (multi-K) that in turn are backed up by the original out and err PrintStream's. You would use System.setErr() and System.setOut() very early (static initializer block) in the startup of your class. The problem is that you are still at the mercy of code that may call flush() on these streams. I suppose you could implement your own FilterOutputStream to eat any flush requests...
    Another solution if you just don't care about the output is to replace System.out and System.err with PrintStreams that write to /dev/nul. This is really easy and efficient.
    The other tried and true approach is to start two threads in the main process each time you start a process. These will simply consume anything that is emitted through the stdout and stderr pipes. These would die when the streams close (i.e. when the process exits). Not pretty, but it works. I'd be worried about the overhead of two additional threads per external process except that processes have such huge overhead (considering you are starting a JVM) that it just won't matter. And it's not like the CPU is going to get hit much.
    If you do this frequently in your program you might consider using a worker thread pool (see Doug Lea's Executor class) to avoid creating a lot of fairly short-lived threads. But this is probably over-optimizing.
    Chuck

  • External process destroy on Windows XP

    Hello friends.
    I have a small program that launches external process (another java program), reads and processes process output until the process is destroyed (terminates). The program works fine on Windows 2000 - when external java program launched as separate Process terminates, an inputStream.readLine() call throws exception, and my program can continue. However on XP when external process terminates, it is not unloaded from memory, and inputStream.readLine() blocks forever...
    I run under lates JVM 1.4... Any ideas why? Has anyone encountered this problem before?
    try {                          
       Process p=Runtime.getRuntime().exec("java SomeProgram");
       in=new BufferedReader(new InputStreamReader(p.getInputStream()));
       while ((s=in.readLine())!=null) { // blocks on XP, works on Win2000
          // Process input
    } catch(IOException ioe) {
    } catch (Exception e) {
    }Any help appreciated.

    I have a similar problem with a small Java program running on Linux, so it may not be OS specific. The code is similar to yours, except that the file being read is produced by a third party. The third party claims to produce a new file every 5 minutes, and it takes about 30 seconds for them to produce the file.
    The program is supposed to run indefinitely -- it reads the file, then sleeps for 5 minutes, then reads the file again.
    Every so often, (like once every 24-36 hours), the program hangs indefinitely at the readLine() call.
    What's driving me crazy is that I've used the exact same idiom in numerous other circumstances and I've never encountered this problem.
    At first I thought that perhaps the file was being changed while my program was reading it. But under those circumstances I would have thought I'd get some kind of IOException, and I don't.
    I'm going to explore using the ready() method of BufferedReader... but I'm not sure if that will solve the problem.
    I'd also be very greatful for any input on this matter!
    - Dean

Maybe you are looking for

  • Problem with call form built_in - SOLVED

    Hi all. I'm on devsuite 10g. I would know where local on my machine I must put the *.fmx files of two forms; I have a form A that calls a form B using call_form('B'); statement. But I receive an error FRM-40010: Cannot read form B. I have got both fo

  • Can't see my network shared folders(on PCs)

    I have a home network with D-Link router with 3 other computers (2 WinXP and a Vista). The computers are all on the same subnet 192.168.0.10X and all use DHCP from the Router. The Macbook is getting an IP from the router but it doesn't see the other

  • TS3988 iCloud Mail on Windows PC

    When I try to open Mail - after I've logged into iCloud - on my Windows 7 PC, I get the following message: "Can't load Mail. There was a problem loading the application." This has been ongoing for about a week now. Anybody any ideas?

  • Mountain lion, gamma

    Colours in applications on screen are different to former OS X 10.7. Will there be any possibility to change back??

  • Cannot get moutain lion to download

    Could anyone tell what i am doing wrong but bought ox mountain lion app but cannot get it to download?