Groups | Search | Server Info | Login | Register
Groups > de.comp.os.unix.programming > #3045
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Newsgroups | de.comp.os.unix.programming |
| Subject | Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? |
| Date | 2023-08-22 16:02 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <uc2f55$2ecut$1@dont-email.me> (permalink) |
| References | <u80t6f$2ufe$1@dont-email.me> <u810v7$3bdg$1@dont-email.me> <u93r9i$19svl$1@dont-email.me> |
Am 17.07.2023 um 18:46 schrieb Bonita Montero: > Am 04.07.2023 um 13:48 schrieb Markus Schaaf: >> Am 04.07.23 um 12:44 schrieb wolfgang bauer (D): >> >>> Als ich einen Starter für eines meiner Programme (ein >>> Konsolenprogramm) anlegte, vergaß ich, die >>> Terminal-Option zu aktivieren. >>> >>> Nach Start erschien natürlich nichts, aber mein Programm lief >>> "unsichtbar" und verbrauchte 100% CPU. >>> >>> Ich fand dann heraus, das es an einer Warteschleife liegt, welche per >>> fgets bzw. scanf auf eine Eingabe wartet. >>> >>> Es scheint, das wenn das entspr. Programm NICHT mit einer Konsole >>> gestartet wurde, diese Eingabefunktionen >>> direkt zurückkehren und das Programm also in einer Endlosschleife >>> festhängt. >>> >>> Frage: Wie kann ich feststellen, ob mein Programm mit oder ohne >>> Konsole gestartet wurde ? >> >> #include <unistd.h> >> if( isatty( STDIN_FILENO )) /* ... */ ; > > Wenn man jetzt ganz pedantisch ist könnte man ja noch als Konsolen > -Start annehmen wollen wenn von der Shell das Stdin redirected wurde. > Das wäre unterscheidbar wenn man den Parent-Prozess ermittelt und > schaut ob dessen Handles auf eine Konsole zeigen. Ich drück das mal > so umgangssprachlich aus, denn wie das unter Unix geht weiß ich nicht, > aber unter Windows wüsste ich das mit aufwendigen Mitteln. Ich hab neulich ein "time ..." auf einen Prozess gehabt den ich redirected hat. Interessanterweise wurde nur der Output des Programms redirected, aber nicht das "time ..." selbst. Wie funktioniert denn sowas programmiertechnisch ? Unter Windows würd ich einfach den Parent-Prozess ermitteln und mir das Konsolen-Handle von dem holen. Unter Linux - keine Ahnung.
Back to de.comp.os.unix.programming | Previous | Next — Previous in thread | Next in thread | Find similar
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Markus Schaaf <mschaaf@elaboris.de> - 2023-07-04 13:48 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? "wolfgang bauer (D)" <schutz@gmx.de> - 2023-07-04 14:06 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Bonita Montero <Bonita.Montero@gmail.com> - 2023-07-17 18:46 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Bonita Montero <Bonita.Montero@gmail.com> - 2023-08-22 16:02 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Christian Weisgerber <naddy@mips.inka.de> - 2023-08-22 14:35 +0000
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Bonita Montero <Bonita.Montero@gmail.com> - 2023-08-23 15:40 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Florian Weimer <fw@deneb.enyo.de> - 2023-08-29 23:02 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Bonita Montero <Bonita.Montero@gmail.com> - 2023-08-30 06:26 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Florian Weimer <fw@deneb.enyo.de> - 2023-08-30 07:48 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Bonita Montero <Bonita.Montero@gmail.com> - 2023-08-30 13:28 +0200
Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ? Helmut Waitzmann <nn.throttle@xoxy.net> - 2023-09-02 02:08 +0200
csiph-web