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; }
Annonceindlæg fra DE-CIX
<...men det er ikke det vigtige...> lille fejl...det er faktisk vigtigt siden at det skal bruges til en linux maskine..
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
kan se det din kode gør det samme..men hvad siger du om sikkerheden, er det sikert nok til kaffepausen... ?
Jeg ved ikke hvad du mener med "sikker nok til kaffepausen".
"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.. :)
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.
hvis du ser på mit eget eksempel så kan du ikke trykke på ctrl+c...i dit kan man godt.. ;)
dit udkast virker 100 % i linux :)
skal jeg så bare lukke og tage point selv ?
Ja, hvis du har opnået det du ville laver du blot et svar som du derpå accepterer.
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...
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.
CTRL/Z pauser et job i Linux
Kurser inden for grundlæggende programmering