Nó được đề cập trong ftok() thủ côngNhững tập tin tôi phải vượt qua như là đối số tên đường dẫn của ftok()
key_t ftok(const char *pathname, int proj_id);
Các ftok() chức năng sử dụng danh tính của các tập tin được đặt tên bởi các tên đường dẫn cho (mà phải tham khảo tệp hiện có, có thể truy cập) ...
Tôi đang bối rối về const char *pathname
.
Phương pháp hay nhất cho nó là gì? Trên hệ thống hiện tại của tôi, tôi có thể vượt qua "/home/Andrew/anyfile"
nhưng không thể các hệ thống khác mà chương trình của tôi phải làm việc sẽ có tệp này.
Tôi sử dụng "/etc/hosts/"
hoặc "/etc/inittab"
vì tôi chắc chắn rằng tất cả các hệ thống như vậy sẽ có hai tệp này? Nó là một ý tưởng tốt? Nó có thể gây ra vấn đề gì không?
Tôi không muốn yêu cầu người dùng nhập tên tệp tại thời điểm thực thi hoặc chuyển tên tệp dưới dạng đối số dòng lệnh.
Có cách nào khác và tốt hơn để quyết định pathname
không?
Cách nào là tốt nhất và đáng tin cậy nhất?
Cảm ơn thời gian của bạn.
Cách tốt hơn cho những gì? Đáng tin cậy cho những gì? - Có lẽ nó tốt hơn để mô tả một nhiệm vụ mà ftok được cho là sẽ được sử dụng? – pmod
@Pmod: Thực ra, tôi cần một hàng đợi để hai chương trình của tôi có thể giao tiếp với nhau. Điều thực sự làm tôi bối rối là tập tin nào tôi nên chuyển tới ftok() sẽ luôn có mặt. [Câu trả lời này] (http://stackoverflow.com/questions/3155291/which-file-should-i-pass-as-pathname-argument-of-ftok/3155312#3155312) nói rằng nó là ok để vượt qua ''/etc''. Nếu vậy thì tại sao mọi người vượt qua các tệp khác? Không phải là nó dễ dàng và tốt hơn để vượt qua một trong các tập tin hệ thống? –
Khi chúng tôi có nhiệm vụ tương tự (được tổ chức thông tin liên lạc giữa hai chương trình trong linux với sự giúp đỡ của hàng đợi tin nhắn) - chúng tôi sử dụng tập tin. Chương trình đầu tiên (giống như máy chủ - luôn chạy) tạo tệp có id tin nhắn, sau đó chương trình thứ hai (chương trình người dùng) đọc id msg từ tệp đó và có quyền truy cập vào hàng đợi. – pmod