在linux中使用c编写服务器 - 客户端程序时,我需要将客户端进程的pid附加到fifo文件名(将用于将数据发送回客户端的fifo文件)。 (服务器客户端程序的概念是服务器从客户端读取数据,计算数据,并将数据发送回客户端以显示它。)我希望为多个客户端和单个服务器执行此操作。这样,每次执行客户端文件时,我都可以使用不同的fifo文件。为了实现这一点,我需要服务器将客户端进程的pid附加到fifo文件名。(例如,如果fifo文件名是'myfifo'而客户端的pid是'2891',则生成的fifo文件名应该是' myfifo2891')任何人都可以帮我实现这个目标吗?如何将pid附加到fifo文件名?我正在考虑使用它的结构。
答案 0 :(得分:3)
您可以使用snprintf()来实现此目的: http://www.cplusplus.com/reference/cstdio/snprintf/
int snprintf(char * s,size_t n,const char * format,...);
所以在你的情况下:
char filename_buffer[64];
int string_len= 0;
pid_t pid = getpid();
string_len = snprintf(filename_buffer, sizeof(filename_buffer),
"%s%d", filename, (int) pid);
if (string_len < 0 || string_len > sizeof(filename_buffer)) { /* Handle error here */ }
答案 1 :(得分:-3)
变量$$包含Linux中当前进程的PID。