Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

687
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!