- 论坛徽章:
- 0
|
我也来试试!
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
char *create_filename_dep_on_argv(char **argv)
{
return "/tmp/filename_dep_on_argv";
}
void
check_proc_use_file(char *filename)
{
FILE *fp = NULL;
char mod[] = "r+";
pid_t pid = 0;
if(access(filename,F_OK) != 0){
mod[0]='w';
mod[1]=0;
}
fp = fopen(filename,mod);
if(!fp){
perror("ERROR\n");
exit(1);
}
if(mod[0]=='r'){
fscanf(fp,"%d",&pid);
if(pid > 0 && kill(pid,0) == 0){ ///判断进程是否存在
perror("I have to go :");
exit(2);//存在
}else{
fseek(fp, 0L, SEEK_SET); //不存在
fprintf(fp,"%d\n",getpid());
}
}else{///这是第一次
fseek(fp, 0L, SEEK_SET);
fprintf(fp,"%d\n",getpid());
}
fclose(fp);
}
int main(int argc,char **argv)
{
char *filename = create_filename_dep_on_argv(argv);
check_proc_use_file(filename);
printf("A new start .\n");
sleep(10);
remove(filename);
return 0;
} |
|
|