2009-08-01 14 views
5

Estoy empezando a programar y pasando por K & R para tratar de aprender C. He llegado a la sección de argumentos de línea de comandos (5.10) pero ahora estoy perplejo. Cada vez que intento abrir un programa que he escrito con argumentos de línea de comando, me dicen que el archivo X, siendo X el argumento, no existe.Principiante Haciendo K & R

`gcc -o encontrar find.c

hallazgo abierta prueba

El archivo/Documentos/Learning_C/prueba no exist.`

¿Alguna sugerencia? Gracias

Respuesta

3

¿En qué sistema estás? En Unix/Linux se compila & ejecutar el ejecutable a través de:

gcc -o find find.c 
./find test 

As others have noted, cuando se anteponga a binario con "./", que no habrá conflictos de nombre. Sin embargo, si ha realizado find accesible en su $PATH, es posible que tenga algunos conflictos con find y test programas --standard con la mayoría de las distribuciones de * nix ... Tal vez usted podría elegir nombres más específicos (es decir, ./myFind testArg)

+0

El prefijo "./" * es * importante, al menos en Linux, como la carpeta actual "." generalmente no es parte de la variable PATH, por lo tanto, el sistema no encontrará el binario. Si el ejecutable que produjo tiene el mismo nombre que un programa estándar en su sistema (como "prueba") omitiendo "./" usará el programa del sistema, no el que compiló. – bluebrother

+0

Usted entiende mal lo que dije. Hice/no/digo "No importa si prefijos o no" ./ "... Simplemente estaba señalando exactamente lo que dijiste: si prefijas con" ./ ", no habrá un enfrentamiento de nombres con find & test. – Pete

+0

@Pete, gracias por sorber las respuestas que otros proporcionaron. Primero con el nombre colisionar con el comando de sistema find y luego con el uso de ./ para eliminar la referencia. Verifique las ediciones de damas y caballeros ... –

1

Intenta darle un nombre diferente al ejecutable de salida.

Sospecho que está ejecutando el comando de búsqueda del sistema que está buscando un directorio llamado 'prueba'.

O intentar forzarla mediante la ejecución de

./find toto 

Editar: agregar el prefijo a la ./ al comando es importante porque le dice al shell para ejecutar el hallazgo en el directorio actual en comparación con la primera 'se encuentran 'eso existe en tu RUTA. Normalmente se recomienda que no tenga. (el directorio actual) en su RUTA por razones de seguridad.

HTH

P.S. Olvidé decir una buena para trabajar con K & R. ¡Acabo de terminar de hacer lo mismo después de trabajar en C durante treinta años y fue bueno regresar y refrescar la mente!

0

En lugar de hacernos a todos individualmente adivinar qué es exactamente lo que estás haciendo mal, quizás deberías pegar el programa que estás usando para la ilustración mencionada.

+0

esto debería ser probablemente un comentario .. – sud03r

+0

Gracias por el consejo. – blacky

Cuestiones relacionadas