Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

702
Visualizações
Alternativa de system () en c Linux para ejecutar un comando de terminal en linux

Quiero ejecutar un comando de terminal de Linux en un programa C. Actualmente estoy usando la función system() pero quiero usar cualquier otra ya que la función system() está prohibida según MISRA.

Por ejemplo, ¿cómo puedo reemplazar

 system("hwclock --systohc --utc");
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Primero puede usar fork() para crear un proceso secundario, luego, en el proceso secundario, puede llamar a exec() para ejecutar el comando que desee.
Hay un ejemplo sencillo:

 $ chmod u+x command.sh $ cat command.sh

#!/usr/bin/env bash
ls-l

************* prueba.c ****************

 #include<unistd.h> int main(void) { execl("./command.sh","command.sh",(char*)0); return 0; }
over 4 years ago · Santiago Trujillo Relatório

0

Puede hacer uso de fork() y luego buscar la familia de funciones exec() .

Alternativamente, es posible que desee echar un vistazo a popen() también.

over 4 years ago · Santiago Trujillo Relatório

0

Esta es una pregunta muy interesante. Mi comprensión de MISRA C es que proporciona pautas para el uso del lenguaje C en sistemas críticos. Pero la biblioteca estándar del lenguaje C, que incluye la función del system , es simplemente una pequeña parte de la suma total del código de la biblioteca que se usa normalmente en las aplicaciones modernas, a menudo incluso en los sistemas integrados.

Nunca he desarrollado una aplicación según los estándares de MISRA y solo he podido encontrar una versión un poco más antigua (de 2004) de las pautas de MISRA. Por lo que puedo decir, MISRA guarda silencio sobre el uso de las funciones de la biblioteca POSIX, que normalmente tendrá disponibles en cualquier tipo de sistema basado en Linux. Si MISRA realmente guarda silencio sobre las funciones de la biblioteca POSIX, entonces es lógico que cualquier función en la biblioteca POSIX no debe estar restringida. Eso incluiría fork , exec y popen , que están definidos por POSIX, no por el estándar del lenguaje C. De los tres, popen es probablemente el más similar en funcionalidad/interfaz a la función del system C.

Dicho esto, es posible que desee preguntarse por qué MISRA C restringe el uso de la función del system y si la misma razón se aplica o no al uso de las tres funciones anteriores.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda