kategoria: MUI
[#1] Subproces i okienko CLI
Hej, walczę dalej z tematem subprocesów pod MorphOSem i zastanawiam się właśnie jak "uciszyć" subproces, tak aby nie otwierał nowego okienka CLI i nie wypisywał wszystkich komunikatów poprzez

fprintf (stderr, ...)

Zastanawiałem się nad nadpisaniem stderr, ale może podczas inicjalizowania subprocesu dałoby się to z automatu wyłączyć? Obecnie w taki sposób konfiguruję subprocess

if (childprocess = (struct Process *) CreateNewProcTags(
                        NP_Entry,       childprocesscode,  
                        NP_Name,        childprocessname,
                        NP_Priority, 	1,
                        NP_CodeType, 	CODETYPE_PPC,
                       TAG_DONE))

Za wszelkie sugestie (no może poza typu "doczytaj sobie" ), będę wam bardzo wdzięczny

Ostatnia aktualizacja: 29.11.2018 12:31:34 przez MarX
[#2] Re: Subproces i okienko CLI

@MarX, post #1

a w CreateNewProcTags nie masz taga na std wyjscia?

SYS_Error ?

Ostatnia aktualizacja: 29.11.2018 12:35:44 przez michal_zukowski
[#3] Re: Subproces i okienko CLI

@michal_zukowski, post #2

OK, sprawdzę to. Dzięki.

Ostatnia aktualizacja: 29.11.2018 12:37:15 przez MarX
[#4] Re: Subproces i okienko CLI

@michal_zukowski, post #2

Rzooku popraw mnie, jeśli coś mieszam, ale jak mogę wykorzystać SYS_Error w odniesieniu do CreateNewProcTags ? To co mi udało się znaleźć to ustawienie SYS_Error w ramach SystemTags. Ale co dalej? jak to można to spiąć z subprocesem tworzonym za pomocą CreateNewProcTags ?

Ostatnia aktualizacja: 29.11.2018 15:04:09 przez MarX
[#5] Re: Subproces i okienko CLI

@MarX, post #4

hmmm, nie mam teraz morphosa pod ręką ale normalne bym dał CreateNewProcTags, dodał ten tag SYS_Error , ustawił na NULL albo na "NIL:" i zobaczył
[#6] Re: Subproces i okienko CLI

@michal_zukowski, post #5

hmmm, nie mam teraz morphosa pod ręką ale normalne bym dał CreateNewProcTags, dodał ten tag SYS_Error , ustawił na NULL albo na "NIL:" i zobaczył

Niestety CreateNewProcTags w ogóle nie przyjmuje taga SYS_Error
[#7] Re: Subproces i okienko CLI

@MarX, post #6

Możesz spróbować jeszcze NP_Input i NP_Output na NIL: ustawić. Wtedy proces nie będzie mógł czytać z konsoli i na konsoli pisać.
[#8] Re: Subproces i okienko CLI

@mschulz, post #7

Możesz spróbować jeszcze NP_Input i NP_Output na NIL: ustawić. Wtedy proces nie będzie mógł czytać z konsoli i na konsoli pisać.

Dzięki za podpowiedź, jednak ani taka konstrukcja:

NP_Input, "NIL:",
NP_Output, "NIL:",

ani taka:

NP_Input, NULL,
NP_Output, NULL,

nie zmienia stanu rzeczy. Tzn. wywołania

fprintf(stderr, ...)

nadal lecą na konsolę
[#9] Re: Subproces i okienko CLI

@MarX, post #6

SYS_Error jest dla funkcji System. Sprobuj NP_Error - w AmigaOS to jest tag, odpowiedzialny za ustawienie error stream.
Problem w tym, ze jesli ten tag (oraz NP_Input i NP_Output) dziala analogicznie jak na AmigaOS, to ich brak ustawia wartosci standardowe, czyli NIL:, wiec nic nie powinno sie wyswietlac.
Podejrzewam, ze program ktory uruchamiasz otwiera wlasne okienko cli albo inicjalizuje na nowo input/output

Ostatnia aktualizacja: 29.11.2018 21:20:06 przez docent
[#10] Re: Subproces i okienko CLI

@MarX, post #8

To chyba logiczne: NP_Input to stdin, NP_Output to stdout wiec przekierowujesz nie to, co trzeba.
stderr to NP_Error
Poza tym, te tagi oczekuja BPTR do Filehandle, a nie pointera do stringu - powinno bc cos w rodzaju NP_Input, Open("NIL:")

Ostatnia aktualizacja: 29.11.2018 21:15:36 przez docent
[#11] Re: Subproces i okienko CLI

@docent, post #10

@docent Niestety nadal nic to nie zmienia. Zrobiłem tak:

NP_Error, Open("NIL:", MODE_NEWFILE)

Nie byłem pewien jaki dać access mode, więc użyłem MODE_NEWFILE. Wygląda to tak jakby rzeczywiście procedury wykonywane w ramach subprocesu inicjalizowały gdzieś swój własny input/output. Jednak niczego takiego nie widzę, oprócz góry wywołań fprintf
[#12] Re: Subproces i okienko CLI

@MarX, post #11

Jeśli palnę teraz głupotę to sorry, wypadłem trochę z tematu raczkowania w C. Ale taki pomysł mi przyszedł do głowy. A co jakby zdefiniować własny fprintf (jeśli się tak da) - tak żeby przy wołaniu fprintf w rzeczywistości był wołany kprintf - wtedy by szło do debug loga a nie na konsolę
[#13] Re: Subproces i okienko CLI

@MarX, post #11

Jesli ten subproces to osobny program, to prawdopodobnie jest zbudowany jako uruchamiany z shella i skompilowany ze startupem, ktory gdy nie ma srodowiska cli to otwiera wlasne okno konsoli i inicjalizuje stdin i stdout.
Napisz cos wiecej o tym co uruchamiasz:
- czy to osobny program ladowany np przez LoadSeg
- jesli tak to czy uruchamiany z shell czy z workbencha
- czy masz caly kod do niego
- czy go sam budujesz i jak go kompilujesz

Ostatnia aktualizacja: 29.11.2018 23:14:35 przez docent
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem