Articles of linux

SO_RCVTIME y SO_RCVTIMEO no afectan las operaciones de Boost.Asio

A continuación está mi código boost::asio::io_service io; boost::asio::ip::tcp::acceptor::reuse_address option(true); boost::asio::ip::tcp::acceptor accept(io); boost::asio::ip::tcp::resolver resolver(io); boost::asio::ip::tcp::resolver::query query(“0.0.0.0”, “8080”); boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); accept.open(endpoint.protocol()); accept.set_option(option); accept.bind(endpoint); accept.listen(30); boost::asio::ip::tcp::socket ps(io); accept.accept(ps); struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; //setsockopt(ps.native(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); setsockopt(ps.native(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); char buf[1024]; ps.async_receive(boost::asio::buffer(buf, 1024), boost::bind(fun)); io.run(); Cuando uso Telnet […]

¿Cómo usar printf para mostrar off_t, nlink_t, size_t y otros tipos especiales?

En mi progtwig, coloco los archivos que quieren y envío los datos. Los campos de una struct estadísticas son todos tipos especiales: struct stat { dev_t st_dev; /* ID of device containing file */ ino_t st_ino; /* inode number */ mode_t st_mode; /* protection */ nlink_t st_nlink; /* number of hard links */ uid_t st_uid; […]

Tubería de datos al progtwig Linux que espera un TTY (terminal)

Tengo un progtwig en Linux que se niega a ejecutar si su stdin / stdout no es un TTY (terminal device). ¿Existe alguna herramienta fácil de usar que cree un PTY, inicie el progtwig con el TTY recién creado y copie todos los datos a través de stdin / stdout? El caso de uso no […]

¿Cómo encuentro la zona horaria del sistema actual?

En Linux, necesito encontrar la zona horaria configurada actualmente como una ubicación Olson. Quiero que mi código (C o C ++) sea portátil para tantos sistemas Linux como sea posible. Por ejemplo. Vivo en Londres, por lo que mi ubicación actual de Olson es “Europa / Londres”. No estoy interesado en ID de zona horaria […]

Cómo establecer la velocidad en baudios a 307200 en Linux?

Básicamente estoy usando el siguiente código para establecer la velocidad en baudios de un puerto serie: struct termios options; tcgetattr(fd, &options); cfsetispeed(&options, B115200); cfsetospeed(&options, B115200); tcsetattr(fd, TCSANOW, &options); Esto funciona muy bien Pero sé que tengo que comunicarme con un dispositivo que usa una velocidad en baudios de 307200. ¿Cómo puedo configurar eso? cfsetispeed(&options, B307200); […]

Cómo verificar el tamaño del montón para un proceso en Linux

Estaba escribiendo un código y siguió fallando. Más tarde, después de cavar los vertederos, me di cuenta de que estaba sobrepasando el límite máximo de heap (la vida hubiera sido más fácil si hubiera agregado un cheque en malloc). Aunque lo arreglé, ¿hay alguna manera de boost mi tamaño de almacenamiento dynamic? PD: Una pregunta […]

Manejo de falla de segmentación

Tengo una aplicación que uso para detectar cualquier falla de segmentación o ctrl-c. Utilizando el siguiente código, puedo detectar la falla de segmentación, pero se llama al manejador una y otra vez. ¿Cómo puedo detenerlos? Para su información, no quiero salir de mi aplicación. Solo puedo cuidar de liberar todos los búferes corruptos. ¿Es posible? […]

fork () y salida

Tengo un progtwig simple: int main() { std::cout << " Hello World"; fork(); } Después de que el progtwig se ejecuta mi salida es: Hello World Hello World . ¿Por qué sucede esto en lugar de un solo Hello world ? Supongo que el proceso secundario se vuelve a ejecutar detrás de escena y que […]

Comparación de punto flotante en Shell Script

¿Puede sugerirme la syntax para hacer una comparación de punto flotante en un script de Bash? Idealmente, me gustaría utilizarlo como parte de una statement if . Aquí hay un pequeño fragmento de código: key1=”12.3″ result=”12.2″ if (( $result <= $key1 )) then # some code here fi

Manejo de múltiples SIGCHLD

En un sistema que ejecuta Linux 2.6.35+, mi progtwig crea muchos procesos secundarios y los monitorea. Si un proceso secundario muere, hago algunas tareas de limpieza y vuelvo a generar el proceso. Uso signalfd() para obtener la señal SIGCHLD en mi proceso. signalfd se usa de forma asincrónica usando libevent . Al usar manejadores de […]