Avatar billede danielhep Nybegynder
08. maj 2004 - 01:23 Der er 13 kommentarer og
1 løsning

Sikker pauseskærm

Hej


Jeg er ved at programmere en sikker pauseskærm...senere bliver den koverteret til Linux...men det er ikke det vigtige...

jeg har følgende kode som ses neden under...hvad mangler så jeg roligt kan forlade min pc, og gå til kaffepause...?

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

int sig_int_flag;

static void sig_int(int signo) {
  signal(SIGINT,sig_int);
  sig_int_flag = 1;
}

int main(void) {
  HANDLE con = GetStdHandle(STD_OUTPUT_HANDLE);
  int i;
  COORD coord;

  SetConsoleTextAttribute(con, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  coord.X = 0;

  while(1) {
    signal(SIGINT,sig_int);
    coord.X = rand() % 81;
    coord.Y = rand() % 81;
    SetConsoleCursorPosition(con, coord);
    printf("%c",2);
    fflush(stdout);
    Sleep(200);
  }

  SetConsoleTextAttribute(con, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);

  return 0;
}
Avatar billede danielhep Nybegynder
08. maj 2004 - 01:26 #1
<...men det er ikke det vigtige...>  lille fejl...det er faktisk vigtigt siden at det skal bruges til en linux maskine..
Avatar billede bertelbrander Novice
08. maj 2004 - 02:42 #2
Måske noget i stil med:

#include <curses.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>

int sig_int_flag;

static void sig_int(int signo)
{
  signal(SIGINT, sig_int);
  sig_int_flag = 1;
}

int main(void)
{
  struct timeval Time;
  signal(SIGINT, sig_int);
  initscr();
  cbreak();
  noecho();
  intrflush(stdscr, FALSE);

  while(!sig_int_flag)
  {
    move(rand() % 25, rand()%80);
    addch(rand()%(128 - 32) + 32);
    refresh();

    Time.tv_sec = 0;
    Time.tv_usec = 100000;
    select(0, 0, 0, 0, &Time);
  }

  return 0;
}

Cygwin's curses understøtter ikke farver :-(
Jeg har sat den til at hoppe ud når du trykker på Ctrl+C
Avatar billede danielhep Nybegynder
08. maj 2004 - 04:03 #3
kan se det din kode gør det samme..men hvad siger du om sikkerheden, er det sikert nok til kaffepausen... ?
Avatar billede bertelbrander Novice
08. maj 2004 - 14:01 #4
Jeg ved ikke hvad du mener med "sikker nok til kaffepausen".
Avatar billede danielhep Nybegynder
08. maj 2004 - 16:07 #5
"sikker nok til kaffepausen":
Om det ville være forsvarligt at starte min lille pauseskærm, og så forlade pc´en..der er jo også andre i lokalet hvor jeg sidder.. :)
Avatar billede bertelbrander Novice
08. maj 2004 - 17:19 #6
Nu kender jeg ikke så meget til Linux, men enhver ville vel kunne gå hen og trykke Ctrl+C lige som dig selv?

Hvis du vil være sikker på at der ikke er andre der benytter dit brugernavn er du vist nødt til at beskytte pauseskærmen med et pass-word.
Avatar billede danielhep Nybegynder
08. maj 2004 - 18:01 #7
hvis du ser på mit eget eksempel så kan du ikke trykke på ctrl+c...i dit kan man godt.. ;)
Avatar billede danielhep Nybegynder
08. maj 2004 - 18:08 #8
dit udkast virker 100 % i linux :)
Avatar billede danielhep Nybegynder
08. maj 2004 - 18:08 #9
skal jeg så bare lukke og tage point selv ?
Avatar billede bertelbrander Novice
08. maj 2004 - 20:30 #10
Ja, hvis du har opnået det du ville laver du blot et svar som du derpå accepterer.
Avatar billede danielhep Nybegynder
08. maj 2004 - 20:37 #11
ups...du ved vel ikke lige sådan hvordan man stopper den der crtl+z man også kan stoppe programmer på ??

Har proget forskellige SIGXXX men var ik så heldig...
Avatar billede bertelbrander Novice
08. maj 2004 - 20:40 #12
Nej, ikke lige på stående fod. Ctrl+Z er normalt EOF (end of file) på windows og kan normalt ikke bruges til at afbryde programmer. Men jeg tror at EOF er Ctrl+D på Linux.
Avatar billede arne_v Ekspert
08. maj 2004 - 21:09 #13
CTRL/Z pauser et job i Linux
Avatar billede danielhep Nybegynder
08. maj 2004 - 21:11 #14
ok..takker for hjælpen..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester