From: Raimund 'R. J. <ra...@lk...> - 2006-01-15 15:40:25
|
hey folks! Stefan told me that there is a problem with the qucsdigi script not being possible to be killed using the 'cancel' button of the simulation window. i spent some time playing around with the problem and found out this: Currently there is a QProcess::kill() that terminates the qucsdigi script. according the docs it might be better to use tryTerminate() first: http://doc.trolltech.com/qtopia1.7/html/qprocess.html#kill but there still is the problem that only the qucsdigi script itself is killed, not its children. this can be solved by not killing the process itself but the entire process group. this is easily done with kill(2) but i see no QT API for it. it would be possible to do that from the qucsdigi script itself. adding this at the beginning of qucsdigi: trap 'kill 0; exit 0' SIGINT SIGTERM would make it kill all children when it receives the INT or TERM signal (which is what QProcess::kill/tryTerminate should do). for this to work each invocation in the script would have to be changed: echo -n "Doing something ..." $something echo "done" to echo -n "Doing something ..." $something & wait $! echo "done" i still not fully understand why this is neccessary, but that might work. Want me to create a patch for this? Raimund -- ___ ___ _____________ / /| / /_ / ____/ ___/\ Nothing useful for / / / / _ / / __/ / __\/ more than a decade / /_/_/ \/ /_/_/ /_/ {www.|raimi@} /______/__/\._\.____/\.____/\ .org \._____\._\/\._\.___\/\.___\/ |
From: <Mic...@al...> - 2006-01-16 07:43:50
|
Hello, that sounds good! Thanks a lot! I will have a try. Would be very nice if that works.... Regards, Michael > hey folks! > > Stefan told me that there is a problem with the qucsdigi script not > being possible to be killed using the 'cancel' button of the simulation > window. > > i spent some time playing around with the problem and found out this: > Currently there is a QProcess::kill() that terminates the qucsdigi > script. according the docs it might be better to use tryTerminate() > first: > http://doc.trolltech.com/qtopia1.7/html/qprocess.html#kill > > but there still is the problem that only the qucsdigi script itself is > killed, not its children. this can be solved by not killing the process > itself but the entire process group. this is easily done with kill(2) > but i see no QT API for it. > > it would be possible to do that from the qucsdigi script itself. adding > this at the beginning of qucsdigi: > > trap 'kill 0; exit 0' SIGINT SIGTERM > > would make it kill all children when it receives the INT or TERM signal > (which is what QProcess::kill/tryTerminate should do). > > for this to work each invocation in the script would have to be > changed: > echo -n "Doing something ..." > $something > echo "done" > > to > > echo -n "Doing something ..." > $something & > wait $! > echo "done" > > i still not fully understand why this is neccessary, but that might > work. > Want me to create a patch for this? > > Raimund > > -- > ___ ___ _____________ > / /| / /_ / ____/ ___/\ Nothing useful for > / / / / _ / / __/ / __\/ more than a decade > / /_/_/ \/ /_/_/ /_/ > {www.|raimi@} /______/__/\._\.____/\.____/\ .org > \._____\._\/\._\.___\/\.___\/ > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files for problems? Stop! Download the new AJAX search engine that > makes searching your log files as easy as surfing the web. DOWNLOAD > SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Qucs-devel mailing list > Quc...@li... > https://lists.sourceforge.net/lists/listinfo/qucs-devel > |
From: Stefan J. <st...@gr...> - 2006-01-16 14:08:24
|
On So, 15.01.2006, 16:42, Raimund 'Raimi' Jacob wrote: > hey folks! hello! > but there still is the problem that only the qucsdigi script itself is > killed, not its children. this can be solved by not killing the process > itself but the entire process group. this is easily done with kill(2) > but i see no QT API for it. > > it would be possible to do that from the qucsdigi script itself. adding > this at the beginning of qucsdigi: > > trap 'kill 0; exit 0' SIGINT SIGTERM > > would make it kill all children when it receives the INT or TERM signal > (which is what QProcess::kill/tryTerminate should do). > > for this to work each invocation in the script would have to be changed: > > echo -n "Doing something ..." > $something > echo "done" > > to > > echo -n "Doing something ..." > $something & > wait $! > echo "done" > > i still not fully understand why this is neccessary, but that might work. is the "wait $!" posix compatible? cheers, stefan. |
From: Raimund 'R. J. <ra...@lk...> - 2006-01-16 15:59:59
|
Stefan Jahn wrote: hi! >>i still not fully understand why this is neccessary, but that might work. > > is the "wait $!" posix compatible? i wouldnt suggest anything that i didnt have the hope it would be portable. so, the underlying system call is posix and i would test it on freebsd and solaris before going on. but i'm pretty confident here. Raimund -- ___ ___ _____________ / /| / /_ / ____/ ___/\ Nothing useful for / / / / _ / / __/ / __\/ more than a decade / /_/_/ \/ /_/_/ /_/ {www.|raimi@} /______/__/\._\.____/\.____/\ .org \._____\._\/\._\.___\/\.___\/ |
From: Stefan J. <st...@gr...> - 2006-01-17 07:44:43
|
On Mo, 16.01.2006, 16:59, Raimund 'Raimi' Jacob wrote: > hi! hello! >>>i still not fully understand why this is neccessary, but that might >>> work. >> >> is the "wait $!" posix compatible? > > i wouldnt suggest anything that i didnt have the hope it would be > portable. so, the underlying system call is posix and i would test it on > freebsd and solaris before going on. but i'm pretty confident here. uh. sorry. :-) are you going to test it and then put a patch into cvs? it's simple to check: place a flipflop, a digital source connected to one of the ports, digital simulaion (timelist, 5ns duration) and simulate, then freehdl "roedelt" rum... cheers, stefan. |