Ejemplo n.º 1
0
int main(int argc, char *argv[])
{
    parse_arguments_and_flags(argc, argv);
    uint16_t port = get_port_from_args();
    struct in_addr serverIP = get_IP_from_args();
    handle_ctrl_c();

    printf("started with IP: %s, port: %d... \n", args[1], port);
    create_socket();

    connect_to_server(port, serverIP);
    printf("Connected...\nEnter messages, max size: %d, ctrl + d to quit, *QUIT* to kill server \n", BUFSIZ);

    int exitv = 0;
    do
    {
        char buffer[BUFSIZ];
        get_input_from_user(buffer);

        exitv = send_message_to_server(buffer);
        if (0 != exitv)
        {
            //get return from the server and print it
            char recvbuffer[BUFSIZ];
            recv(sock, recvbuffer, BUFSIZ, 0);
            printf("server sent back: \"%s\"\n", recvbuffer);
        }
    } while (0 != exitv);

    close(sock);
    exit(EXIT_SUCCESS);
}
Ejemplo n.º 2
0
static void		is_special_action(char *key)
{
	if (key[0] == 27 && key[1] == 91 && key[2] == 72)
		go_to_start();
	else if (key[0] == 27 && key[1] == 91 && key[2] == 70)
		go_to_end();
	else if (key[0] == 21 && key[1] == 0 && key[2] == 0)
		cut_entire_line();
	else if (key[0] == 11 && key[1] == 0 && key[2] == 0)
		cut_end_of_line();
	else if (key[0] == 16 && key[2] == 0 && key[2] == 0)
		paste();
	else if (key[0] == 12 && key[1] == 0 && key[2] == 0)
		clear();
	else if (key[0] == 3 && key[1] == 0 && key[2] == 0)
		handle_ctrl_c();
	else if (key[0] == 2 && key[1] == 0 && key[2] == 0)
		move_back_word();
	else if (key[0] == 14 && key[1] == 0 && key[2] == 0)
		move_next_word();
	else if (key[0] == 27 && key[1] == 91 && key[2] == 53)
		go_up();
	else if (key[0] == 27 && key[1] == 91 && key[2] == 54)
		go_down();
}
Ejemplo n.º 3
0
int main(int argc, char *argv[]) {
    handle_ctrl_c();

    parse_arguments_and_flags(argc, argv);
    parseURL();

    printf("started with host: %s, page: %s ... \n", host,page);

    create_socket();

    connect_to_server();
    send_request();

    handle_response();

    close(sock);
    exit(EXIT_SUCCESS);
}
Ejemplo n.º 4
0
void open_console() { handle_ctrl_c(); }
Ejemplo n.º 5
0
void factor_vm::unix_init_signals() {
  init_signal_pipe(this);

  signal_callstack_seg = new segment(callstack_size, false);

  stack_t signal_callstack;
  signal_callstack.ss_sp = (char*)signal_callstack_seg->start;
  signal_callstack.ss_size = signal_callstack_seg->size;
  signal_callstack.ss_flags = 0;

  if (sigaltstack(&signal_callstack, (stack_t*)NULL) < 0)
    fatal_error("sigaltstack() failed", 0);

  {
    struct sigaction memory_sigaction;
    init_sigaction_with_handler(&memory_sigaction, memory_signal_handler);
    sigaction_safe(SIGBUS, &memory_sigaction, NULL);
    sigaction_safe(SIGSEGV, &memory_sigaction, NULL);
    sigaction_safe(SIGTRAP, &memory_sigaction, NULL);
  }

  {
    struct sigaction fpe_sigaction;
    init_sigaction_with_handler(&fpe_sigaction, fpe_signal_handler);
    sigaction_safe(SIGFPE, &fpe_sigaction, NULL);
  }

  {
    struct sigaction synchronous_sigaction;
    init_sigaction_with_handler(&synchronous_sigaction,
                                synchronous_signal_handler);
    sigaction_safe(SIGILL, &synchronous_sigaction, NULL);
    sigaction_safe(SIGABRT, &synchronous_sigaction, NULL);
  }

  {
    struct sigaction enqueue_sigaction;
    init_sigaction_with_handler(&enqueue_sigaction, enqueue_signal_handler);
    sigaction_safe(SIGWINCH, &enqueue_sigaction, NULL);
    sigaction_safe(SIGUSR1, &enqueue_sigaction, NULL);
    sigaction_safe(SIGCONT, &enqueue_sigaction, NULL);
    sigaction_safe(SIGURG, &enqueue_sigaction, NULL);
    sigaction_safe(SIGIO, &enqueue_sigaction, NULL);
    sigaction_safe(SIGPROF, &enqueue_sigaction, NULL);
    sigaction_safe(SIGVTALRM, &enqueue_sigaction, NULL);
#ifdef SIGINFO
    sigaction_safe(SIGINFO, &enqueue_sigaction, NULL);
#endif
  }

  handle_ctrl_c();

  {
    struct sigaction sample_sigaction;
    init_sigaction_with_handler(&sample_sigaction, sample_signal_handler);
    sigaction_safe(SIGALRM, &sample_sigaction, NULL);
  }

  /* We don't use SA_IGN here because then the ignore action is inherited
     by subprocesses, which we don't want. There is a unit test in
     io.launcher.unix for this. */
  {
    struct sigaction ignore_sigaction;
    init_sigaction_with_handler(&ignore_sigaction, ignore_signal_handler);
    sigaction_safe(SIGPIPE, &ignore_sigaction, NULL);
    /* We send SIGUSR2 to the stdin_loop thread to interrupt it on FEP */
    sigaction_safe(SIGUSR2, &ignore_sigaction, NULL);
  }
}