utilities_linux.h - Biblioteca com diversas funções para o Linux
Publicado por Mauricio Ferrari (última atualização em 03/05/2020)
[ Hits: 1.474 ]
Homepage: https://www.youtube.com/@LinuxDicasPro
Essa biblioteca possui métodos de funções para o Linux que eu encontrei na internet. Então juntei tudo e fiz algumas adaptações para ficar ao meu gosto.
/****************************************************************************************************
Biblioteca utilities_linux.h
By Mauricio Ferrari - 10/02/2020.
Funções Adaptadas dos Autores:
Fabio Junior Sabai - 29/11/2004
Marcos Paulo Ferreira - 27/12/2012
****************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
/****************************************************************************************************/
/** Defines. **/
#define getch() init_attr(1); _getch();
#define getche() init_attr(1); _getche();
#define kbhit() init_attr(0); _kbhit();
/****************************************************************************************************/
/** Declarações de Funções. **/
void rl_ttyset(int rst);
void init_attr(int x);
void close_attr();
int _getch(void);
int _getche(void);
int _kbhit(void);
static char *gets(char *str);
struct termios old_attr, new_attr;
/****************************************************************************************************/
/** rl_ttyset - Função Para Ler Teclas Pressionadas Pela Função getc sem Pressionar ENTER. **/
void rl_ttyset(int rst){
static struct termios old;
struct termios new;
if(rst==0){
(void) tcgetattr(0, &old);
new=old;
new.c_lflag &=~(ECHO|ICANON);
new.c_iflag &=~(ISTRIP|INPCK);
(void) tcsetattr(0, TCSANOW, &new);
}else{
(void) tcsetattr(0, TCSANOW, &old);
}
}
/****************************************************************************************************/
/** init_attr - Função para Desligar o Modo Canônico. **/
void init_attr(int x){
tcgetattr(0,&old_attr);
new_attr=old_attr;
new_attr.c_lflag &=~ICANON;
new_attr.c_cc[VTIME]=0;
new_attr.c_cc[VMIN]=x;
}
/****************************************************************************************************/
/** close_attr - Função para Restaurar o Modo Canônico. **/
void close_attr(){
tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
}
/****************************************************************************************************/
/** _getch - Implementação do getch no Linux. **/
int _getch(void){
int c;
new_attr.c_lflag &=~ECHO;
tcsetattr(STDIN_FILENO,TCSANOW,&new_attr);
c=getchar();
tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
return c;
}
/****************************************************************************************************/
/** _getche - Implementação do getche no Linux. **/
int _getche(void) {
int c ;
new_attr.c_lflag &=ECHO;
tcsetattr(STDIN_FILENO,TCSANOW,&new_attr);
c=getchar();
tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
return c;
}
/****************************************************************************************************/
/** _kbhit - Implementação do kbhit no Linux. **/
int _kbhit(void) {
int c;
tcsetattr(STDIN_FILENO,TCSANOW,&new_attr);
c=getchar();
tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
return c;
}
/****************************************************************************************************/
/** gets - Alguns Compiladores do Linux não Possuem mais o gets. **/
static char *gets(char *str){
int c;
int n=0;
while((c=getchar())!=EOF && c!='\n')
str[n++]=c;
str[n]='\0';
return n==0 && c==EOF? NULL: str;
}
/****************************************************************************************************/
Distribuição Eletronica de Elementos Químicos em C++
Método de Power para calcular o autovelor dominante de uma matriz
Exceções em C através de try-throw-catch
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









