La función C system () no muestra mensajes
Frecuentes
Visto 135 veces
0
En un programa en C, solo si escribo
system("./a.bin \"$(cat b.txt)\"; read -s -n 1");
Puedo ver mensajes de error (por ejemplo: "Error de segmentación").
Sin el comando 'leer' mi programa no muestra errores; ¿por qué?
Gracias por su atención.
Edit:
SO: Slackware 14.1, compilador: gcc 4.8.2
El archivo ac contiene: int main() {printf("len = %d\n", strlen(NULL));}
El archivo pc contiene: int main() {system("./a.bin \"$(cat b.txt)\"; read -s -n 1");}
El comando "./p.bin" da:
sh: line 1: 1177 Segmentation fault ./a.bin "$(cat b.txt)"
Si cambiamos de pc en int main() {system("./a.bin \"$(cat b.txt)\"");}
luego al ejecutar p.bin no aparecen errores.
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c system-calls or haz tu propia pregunta.
Desde la página del manual: "system () ejecuta un comando especificado en el comando llamando al comando /bin/sh -c, y regresa después de que se haya completado el comando". Esto significa que debe usar comillas simples alrededor de su comando, si tiene más de uno separado por
;
. - user2845360¿Quiere decir: system('./a.bin \"$(cat b.txt)\"; read -s -n 1')? No funciona (el compilador muestra un error). O system("./a.bin '$(cat b.txt)'; read -s -n 1")? Tampoco funciona (el programa a.bin obtiene la cadena "$(cat b.txt)", no el contenido del archivo). Mi pregunta era: ¿por qué sin el comando 'leer' no veo mensajes de error? - Antonio Rizzo
Cuando usas
system("./a.bin \"$(cat b.txt)\"");
veo mensajes de errorcat: b.txt: No such file or directory
sh: ./a.bin: No such file or directory
, entonces, no puedo producir el problema que describe. - ArmaliLo siento, di muy pocos detalles. Probé en Slackware 14 (32 bits). El archivo "ac" puede ser "int main() {printf("len = %d\n", strlen(NULL));}". El archivo "pc" puede ser "int main() {system("./a.bin \"$(cat b.txt)\"; read -s -n 1");}". Compile con "gcc pc -o p.bin". Luego ejecute "./p.bin" - Antonio Rizzo