我已经找到了一种方法来做我想做的事,但它看起来很脏。我只是想做一件简单的事情
sprintf(serv_name, "Fattura-%i.txt", getpid());
fd = open(serv_name, PERMISSION | O_CREAT);
if (fd<0) {
perror("CLIENT:\n");
exit(1);
}
我想要新文件,而不是在我的程序目录中创建,它直接在子目录中创建。例如我的文件在./program/我希望文件将在./program/newdir /
中创建我试着直接在字符串“serv_name”中放入我想要的文件路径,就像
sprintf("./newdir/fattura-%i.txt",getpid());
还尝试了\\而不是/。如何才能做到这一点? 我发现的唯一方法是在程序结束时输入:
mkdir("newdir",IPC_CREAT);
system("chmod 777 newdir");
system("cp Fattura-*.txt ./fatture/");
system("rm Fattura-*.txt");
答案 0 :(得分:2)
试试这个,它有效。我改变了什么:我使用了fopen
代替open
而我使用了snprintf
代替sprints
,因为它更安全:
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
char serv_name[1000];
mkdir("newdir", S_IRWXU | S_IRWXG | S_IRWXO);
snprintf(serv_name, sizeof(serv_name), "newdir/Fattura-%i.txt", getpid());
FILE* f = fopen(serv_name, "w");
if (f < 0) {
perror("CLIENT:\n");
exit(1);
}
}