Kirjoittaja Aihe: C-ohjelmointi: Miten sammuttaa pääte? [Ratkaistu]  (Luettu 5368 kertaa)

Scionar

  • Käyttäjä
  • Viestejä: 53
    • Profiili
Eli kysymys kuuluu että millä koodilla pystyy C-ohjelmointikielessä sammuttamaan päätteen ainakin näin Linuxissa?
« Viimeksi muokattu: 03.01.09 - klo:20.59 kirjoittanut Scionar »

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #1 : 02.01.09 - klo:00.56 »
mitähän tarkalleen ottaen tarkoitat päätteen sammuttamisella?
Janne

Scionar

  • Käyttäjä
  • Viestejä: 53
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #2 : 02.01.09 - klo:01.43 »
mitähän tarkalleen ottaen tarkoitat päätteen sammuttamisella?

Samaa asiaa kuin pääte suljettaisiin klikkaamalla ruksia.

kalarm

  • Käyttäjä
  • Viestejä: 716
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #3 : 02.01.09 - klo:13.25 »
Arvaus. Kokeile kirjoittaa päätteeseen:exit => enter.
Terveisin kalarm.
« Viimeksi muokattu: 02.01.09 - klo:13.33 kirjoittanut kalarm »
ubuntu 22.04.2 LTS 64bit
ubuntu 18.4 LTS 64bit
Windows 7 professional

mk1970

  • Käyttäjä
  • Viestejä: 213
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #4 : 02.01.09 - klo:13.45 »
Samaa asiaa kuin pääte suljettaisiin klikkaamalla ruksia.

Onko pääte sama josta C-ohjelmasi käynnistetään? Silloin voisit katsoa getppid() kutsua jolla saa C-ohjelmasi "äidin" selville ja lähettää tuolle pid:lle vaikka SIGTERM-signaalin...

Scionar

  • Käyttäjä
  • Viestejä: 53
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #5 : 02.01.09 - klo:19.09 »
Onko pääte sama josta C-ohjelmasi käynnistetään? Silloin voisit katsoa getppid() kutsua jolla saa C-ohjelmasi "äidin" selville ja lähettää tuolle pid:lle vaikka SIGTERM-signaalin...

Jep. Sama pääte pitäisi saada sammutettua. Saisinko jonkinlaisen koodiesimerkin tästä käytännöstä?

mk1970

  • Käyttäjä
  • Viestejä: 213
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #6 : 02.01.09 - klo:22.00 »
Koodia: [Valitse]
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

int main(int argc, char **argv)
{
    pid_t pid, ppid;

    pid = getpid();
    ppid = getppid();

    printf("Minä olen %d ja äitini on %d\n", pid, ppid);
    sleep(10);

    kill(ppid, SIGKILL);
    return 0;
}

Kannattaa valita joku parempi signaali kuin 9, kill -l kertoo vaihtoehdot...

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #7 : 02.01.09 - klo:22.15 »
Jep. Sama pääte pitäisi saada sammutettua.

miksi ihmeessä?

mitä lapsiprosessille pitäisi tapahtua kun sen käynnistänyt prosessi kuolee/sammuu?
Janne

Scionar

  • Käyttäjä
  • Viestejä: 53
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #8 : 03.01.09 - klo:17.39 »
miksi ihmeessä?

Olen tekemässä tekstipeliä. Haluaisin saada valinnan "Lopeta peli" toimimaan.

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #9 : 03.01.09 - klo:17.45 »
Olen tekemässä tekstipeliä. Haluaisin saada valinnan "Lopeta peli" toimimaan.

oletko tekemässä tekstipeliä jota saa pelata vain graafisessa ympäristössä terminaali-ikkunassa?
entä jos joku haluaa pelata sitä esim. puhtaasti komentoriviltä tai ssh:n yli palvelimella?

minun mielestäni "lopeta peli" -vaihtoehdon pitäisi vain lopettaa peli, ei logata käyttäjää ulos, katkaista etäyhteyttä, lopettaa mitään muita ohjelmia tai mitää muutakaan erityisen yllättävää.
Janne

Scionar

  • Käyttäjä
  • Viestejä: 53
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #10 : 03.01.09 - klo:20.54 »
oletko tekemässä tekstipeliä jota saa pelata vain graafisessa ympäristössä terminaali-ikkunassa?
entä jos joku haluaa pelata sitä esim. puhtaasti komentoriviltä tai ssh:n yli palvelimella?

Puhtaasti komentorivillä pelattavaa peliä olen tekemässä.

minun mielestäni "lopeta peli" -vaihtoehdon pitäisi vain lopettaa peli, ei logata käyttäjää ulos, katkaista etäyhteyttä, lopettaa mitään muita ohjelmia tai mitää muutakaan erityisen yllättävää.

Lopulta aikamoinen mielipideasia siinä mitä haluaa tuolla valinnalla tapahtuvan. Itse ainakin näen käytännöllisempänä sen että pääte sammuu kuin että pelkästään ohjelma ajautuisi loppuun.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #11 : 03.01.09 - klo:21.44 »
Lopulta aikamoinen mielipideasia siinä mitä haluaa tuolla valinnalla tapahtuvan. Itse ainakin näen käytännöllisempänä sen että pääte sammuu kuin että pelkästään ohjelma ajautuisi loppuun.

Jos se on mielipideasia niin sinun mielipiteesi on väärä ja jannen oikea. Piste.

Tilanne olisi suunnilleen sama jos työpöytäympäristön (esim. Gnome tai KDE) alla ajettava ohjelma tappaisi sammuessaan koko työpöytäympäristön. Sehän se vasta käytännöllistä olisikin...

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: C-ohjelmointi: Miten sammuttaa pääte? [Ratkaistu]
« Vastaus #12 : 04.01.09 - klo:10.24 »
Eikös tuo mene suunnilleen niin, että jos sen pelin laittaa komennolla päätteestä auki niin se sulkee vain pelin ja jos sen avaa kuvakkeesta (joka avaa sen päätteessä) niin se sulkee myös sen päätteen... ::)
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

mk1970

  • Käyttäjä
  • Viestejä: 213
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte?
« Vastaus #13 : 04.01.09 - klo:12.47 »
Jos se on mielipideasia niin sinun mielipiteesi on väärä ja jannen oikea. Piste.

Nyt kun tiedämme taustat niin olen samaa mieltä, äitiprosessia ei saa sammuttaa. Tai voihan sen sammuttaa mutta se on aivan väärä lähestymistapa jolla voi olla ei-toivotut seuraukset...

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte? [Ratkaistu]
« Vastaus #14 : 04.01.09 - klo:13.07 »
Valikkoihin vaikka tuollainen käynnistyskomento:
Koodia: [Valitse]
xterm -e ohjelma
jos tätä  tässä etsitään. Sulkeutuu lopetettaessa.
KDE neon
Uudempaa KDE:tä Ubuntulla

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: C-ohjelmointi: Miten sammuttaa pääte? [Ratkaistu]
« Vastaus #15 : 04.01.09 - klo:13.42 »
Eikös tuo mene suunnilleen niin, että jos sen pelin laittaa komennolla päätteestä auki niin se sulkee vain pelin ja jos sen avaa kuvakkeesta (joka avaa sen päätteessä) niin se sulkee myös sen päätteen... ::)

tämä on oletuskäytäntö ja tapahtuu automaattisesti ilman ylimääräisiä prosessien lopettamisia.
Janne