• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. ipcBeginprocess!

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 144
  • Views 18863
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ipcBeginprocess!

imagesensor123
imagesensor123 over 14 years ago

hi, 

  I write a skill function to collect some simulation information, it shows like the following code

procedure(zfGetBeginTime()
readBeginTimeIpc=ipcBeginProcess("date")
simulationBeginTime=ipcReadProcess(readBeginTimeIpc)
fp=outfile("~/skill/timeConsumption.out")
fprintf(fp "%s " simulationBeginTime)
close(fp)
)

but, i found that, i can get the right info if i type these command in CIW one by one. i will get only "t" in the file(pointer) if i run this procedure in CIW, i can't understand it, so please give me some advice if you know this.

Regards,

zfeng

  • Cancel
  • Quek
    Quek over 14 years ago

    Hi zfeng

    I think solution 1832836 will be useful in explaining this. You can resolve the problem by adding a small timeout value to ipcReadProcess. E.g.

    ipcReadProcess(readBeginTimelpc 1)

    OR

    You can use ipcWait:

    readBeginTimeIpc=ipcBeginProcess("date")
    ipcWait(readBeginTimelpc)
    simulationBeginTime=ipcReadProcess(readBeginTimeIpc)

    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

     In general you should call ipcWaitForProcess() before calling ipcReadProcess - this waits until the process is up and running and ready to be communicated with. Alternatively use ipcWait as Quek suggested to wait until the process has ended - the choice would depend on whether you really want to wait for it to finish.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • imagesensor123
    imagesensor123 over 14 years ago

    Hi,

      thanks! it works well, and we don't have to use ipcStopProcess() or ipcKillProcess() after the ipcBeginProcess, i noticed that the exitStatus is set to "0"   after the the ipcBeginProcess() is exacuted, is it normal?

    Regards,

    zfeng

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

     Zfeng,

    The exit status of what? The return value of ipcGetExitStatus? It will return 0 if the process is still running (ipcIsAliveProcess will tell you this) and 0 if the exit status really was 0 once it has finished.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • imagesensor123
    imagesensor123 over 14 years ago

     Hi,

     yes, the function likes this

    newIpc=ipcBeginProcess(myipc)  ; open an image viewer,such as "eog" in linux

    ;;;some seconds later, i close the "eog" by clicking the close button 

    ipcIsActiveProcess(newIpc)  ;; it will return nil

    ipcGetExitStatus(newIpc)  ;; it will return 0

    so , my question is that: if the ipcKillProcess(newIpc) equal to click the close button of software window , which function can be used to close the ipc, ipcKillProcess(newIpc)? or the ipc will close automatically after closing the software window?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Didn't you just answer this yourself? ipcIsActiveProcess tells you whether it is running (and not stopped). ipcIsAliveProcess() tells you whether it is running at all (even if stopped - by stopped I mean has been sent a STOP signal - as would happen if you called ipcStopProcess(); if you call that, the process is not active, but is alive).

    It doesn't matter whether the process has been completed via you closing the window or ipcKillProcess being called - in both cases it ends.

    If you use the asynchronous approach with ipcBeginProcess() - i.e. you pass a data, error and exit handler function name, the exit handler will be invoked when the process ends (however it ends).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • imagesensor123
    imagesensor123 over 14 years ago
    Hi,

    thanks for explaining so clearly, i got it!

    Regards,
    zfeng
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information