La función C system () no muestra mensajes

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.

preguntado el 02 de diciembre de 13 a las 08:12

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 ;. -

¿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? -

Cuando usas system("./a.bin \"$(cat b.txt)\""); veo mensajes de error cat: b.txt: No such file or directory sh: ./a.bin: No such file or directory, entonces, no puedo producir el problema que describe. -

Lo 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" -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.