c - 将 pid 附加到文件名

标签 c linux

在 linux 中使用 c 编写服务器-客户端程序时,我需要将客户端进程的 pid 附加到 fifo 文件名(将用于将数据发送回客户端的 fifo 文件)。 (服务器客户端程序的概念是让服务器从客户端读取数据,计算数据,并将数据发送回客户端以显示它。)我希望为多个客户端和单个服务器执行此操作。这样,每次执行客户端文件时,我都可以拥有不同的 fifo 文件。为了实现这一点,我需要服务器将客户端进程的 pid 附加到 fifo 文件名。(例如,如果 fifo 文件名为“myfifo”并且客户端的 pid 为“2891”,则生成的 fifo 文件名应为“myfifo2891') 谁能帮我实现这个目标?如何将 pid 附加到 fifo 文件名?我正在考虑为它使用一个结构。

最佳答案

您可以使用 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 */ }

关于c - 将 pid 附加到文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34260350/

相关文章:

c - linux c编程fifo无故失败

c - 跟踪由 gcc 编译的应用程序

c++ - 在 Linux 上快速高效地绘制像素阵列

C++ 获取 linux 发行版名称\版本

linux - 网络中断后重新初始化/重新连接终端

c - zlib输出内存缓冲区大小错误

无法从 UTF-8 文件中读取某些字符。纯C

c++ - XLib 窗口名称问题

c - 结构指针数组和分配结构数据

c - LD_PRELOAD 具有枚举和结构的函数