Groups | Search | Server Info | Login | Register


Groups > de.comp.os.unix.programming > #3045

Re: Linux: Test, ob Programm über Terminal gestartet wurde. Wie ?

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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