Se menciona en ftok() manual de¿Qué archivo debo pasar como argumento de nombre de ruta de ftok()
key_t ftok(const char *pathname, int proj_id);
El ftok() función utiliza la identidad del archivo llamado por el nombre de ruta dada (que debe consulte un archivo existente y accesible) ...
Estoy confundido acerca de const char *pathname
.
¿Cuál sería la mejor práctica para ello? En mi sistema actual puedo pasar "/home/Andrew/anyfile"
pero no es posible que otros sistemas, en los que mi programa deba funcionar, tengan este archivo.
¿Qué tal si uso "/etc/hosts/"
o "/etc/inittab"
porque estoy seguro de que todos estos sistemas tendrán estos dos archivos? ¿Es una buena idea? ¿Puede causar algún problema?
No deseo pedirle al usuario que ingrese el nombre del archivo en el momento de la ejecución ni pasar el nombre del archivo como argumento de la línea de comando.
¿Hay alguna otra forma diferente y mejor de decidir pathname
?
¿Cuál es la mejor y más confiable?
Gracias por su tiempo.
¿Mejor manera para qué? Confiable para qué? - Tal vez es mejor describir una tarea para la cual se supone que se usa ftok. – pmod
@Pmod: en realidad, necesito una cola para que mis dos programas puedan comunicarse entre sí. Lo que realmente me ha confundido es ese archivo que debo pasar a ftok() que siempre estará presente. [Esta respuesta] (http://stackoverflow.com/questions/3155291/which-file-should-i-pass-as-pathname-argument-of-ftok/3155312#3155312) dice que está bien pasar ''/etc''. Si es así, ¿por qué las personas pasan otros archivos? ¿No es fácil y mejor pasar uno de los archivos del sistema? –
Cuando tuvimos la tarea similar (comunicación organizada entre dos programas en Linux con la ayuda de la cola de mensajes) - usamos el archivo. El primer programa (que es como servidor - siempre en ejecución) crea un archivo con id de mensaje, luego el segundo (programa de usuario) lee el id. De mensaje de ese archivo y tiene acceso a la cola. – pmod