mrx6s0
(usa Ubuntu)
Enviado em 18/08/2016 - 06:24h
paulo1205 escreveu:
Certamente há. Leia sobre a função
daemon () (na seção 3 da documentação
on-line ).
Essa função é, na verdade, um encapsulamento de múltiplas chamadas ao sistema, e tem efeito mais ou menos parecido com o seguinte bloco de código (aqui mostrado de modo simplificado).
switch(fork()){
case -1: // Não conseguiu criar novo processo.
return -1;
case 0: // Processo filho: este aqui é o daemon.
chdir("/");
setsid(); // Desassocia-se do terminal controlador.
return 0;
default: // Processo pai: termina para deixar o filho em execução em background.
_exit(0);
}
paulo1205 escreveu:
Certamente há. Leia sobre a função
daemon () (na seção 3 da documentação
on-line ).
Essa função é, na verdade, um encapsulamento de múltiplas chamadas ao sistema, e tem efeito mais ou menos parecido com o seguinte bloco de código (aqui mostrado de modo simplificado).
switch(fork()){
case -1: // Não conseguiu criar novo processo.
return -1;
case 0: // Processo filho: este aqui é o daemon.
chdir("/");
setsid(); // Desassocia-se do terminal controlador.
return 0;
default: // Processo pai: termina para deixar o filho em execução em background.
_exit(0);
}
Amigo, nesse código eu poderia implementar a parte do código que me passastes? Eu tentei alguns métodos, mas não tive sucesso. Se puder me ajudar, ficarei realmente grato.
#include <stdio.h> // input/output standard
#include <termios.h> // to terminal stuffs
#include <unistd.h> // *nyx only
#include <malloc.h>
#define EXIT_SUCCESS
int main(void)
{
///* struct of fuction getchar(); */
struct termios term, term_orig;
tcgetattr(STDIN_FILENO, &term);
term_orig = term;
term.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &term);
///* code here... */
char *key; //
log:
key = getpass(" "); // get keys
fflush(stdin);
printf("\nkeys pressed: %s\n",key); //* check the validity later
if (key == '\NUL')
{
ferror("Error...");
return -1;
}
else
{
printf("\n");
goto log; // loop.
return 0;
}
///* Remember to set back, or your commands won't echo! */
tcsetattr(STDIN_FILENO, TCSANOW, &term_orig);
return EXIT_SUCCESS;
}
Esse código faz parte de um código maior. É um estilo meio asiático, onde o usuário terá que digitar as teclas sem vê-las nem em modo console, para então o terminal retornar com as palavras digitadas. Que na verdade, são dicas e respostas, para os próximos passos do jogo. Essa parte é do nível hard. hehe
Ficarei grato se puder ajudar!
Abraço.