I want to create a function that, given a string filename, creates the file called filename.PID inside the ./pid directory.
#define DEBUG 1
//PRINT_DEBUG just print the string in stderr
int CreatePidFile(char *filename){
if(DEBUG){
DEBUG_PRINT("CreatePidFile: start
");
}
char *path = "./pid/";
char *post = ".PID";
FILE *pidfile;
char *pathfilename;
int N=strlen(path)+strlen(filename)+strlen(post)+1;
if((pathfilename=(char *)malloc(N*sizeof(char)))==NULL){
return -3;
}
strcpy(pathfilename, path);
strcat(pathfilename, filename);
strcat(pathfilename, post);
pathfilename[N-1]=''; //just to be sure that it has the final string char
if((pidfile = fopen(pathfilename, "w"))==NULL){
if(DEBUG){
DEBUG_PRINT("CreatePidFile: impossible to create il file
");
}
free(pathfilename);
return -1;
}
int pid=getpid();
if((fwrite((void *)&pid, sizeof(int), 1, pidfile))==0){
if(DEBUG){
DEBUG_PRINT("CreatePidFile: impossible to write pid in pidfile
");
}
fclose(pidfile);
free(pathfilename);
return -2;
}
fclose(pidfile);
free(pathfilename);
if(DEBUG){
DEBUG_PRINT("CreatePidFile: end
");
}
return 0;
}
The main I use is:
int main(){
printf("create pid: start
");
char *filepid = "test_pid_file";
if((CreatePidFile(filepid))!=0){
printf("file not created
");
}
else{
printf("test_utility: file is created
");
}
return 0;
}
At the end of the program, the file is created but is a binary file.
I want a text file.
question from:
https://stackoverflow.com/questions/65882446/c-create-a-pid-file-non-binary 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…