mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-30 05:48:05 +00:00
zdtm: Factor out pidfiles creation
After the pidfile manipulation is sanitized, we can have a helper for pidfile wrting. Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
This commit is contained in:
parent
8abf6d2d1b
commit
c88d40991a
@ -408,16 +408,8 @@ void ns_create(int argc, char **argv)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fd = open(pidfile, O_CREAT | O_EXCL | O_WRONLY, 0666);
|
||||
if (fd == -1) {
|
||||
fprintf(stderr, "Can't create the file %s: %m\n", pidfile);
|
||||
if (write_pidfile(pid))
|
||||
exit(1);
|
||||
}
|
||||
if (dprintf(fd, "%d", pid) == -1) {
|
||||
fprintf(stderr, "Can't write in the file %s: %m\n", pidfile);
|
||||
exit(1);
|
||||
}
|
||||
close(fd);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
@ -91,10 +91,28 @@ void test_ext_init(int argc, char **argv)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int write_pidfile(int pid)
|
||||
{
|
||||
int fd;
|
||||
|
||||
fd = open(pidfile, O_CREAT | O_EXCL | O_WRONLY, 0666);
|
||||
if (fd == -1) {
|
||||
fprintf(stderr, "Can't create the file %s: %m\n", pidfile);
|
||||
return -1;
|
||||
}
|
||||
if (dprintf(fd, "%d", pid) == -1) {
|
||||
fprintf(stderr, "Can't write in the file %s: %m\n", pidfile);
|
||||
return -1;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void test_init(int argc, char **argv)
|
||||
{
|
||||
pid_t pid;
|
||||
static FILE *pidf;
|
||||
char *val;
|
||||
struct sigaction sa = {
|
||||
.sa_handler = sig_hand,
|
||||
@ -166,12 +184,6 @@ void test_init(int argc, char **argv)
|
||||
setup_outfile();
|
||||
redir_stdfds();
|
||||
|
||||
pidf = fopen(pidfile, "wx");
|
||||
if (!pidf) {
|
||||
pr_perror("Can't create pid file %s", pidfile);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
pid = fork();
|
||||
if (pid < 0) {
|
||||
pr_perror("Daemonizing failed");
|
||||
@ -198,13 +210,12 @@ void test_init(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(pidf, "%d\n", pid);
|
||||
fclose(pidf);
|
||||
if (write_pidfile(pid))
|
||||
exit(1);
|
||||
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
fclose(pidf);
|
||||
|
||||
if (setsid() < 0) {
|
||||
pr_perror("Can't become session group leader");
|
||||
exit(1);
|
||||
|
@ -92,6 +92,8 @@ extern int parse_opt_ulong(char *param, void *arg);
|
||||
extern int parse_opt_string(char *param, void *arg);
|
||||
#define param_check_string(name, p) __param_check(name, p, char *)
|
||||
|
||||
extern int write_pidfile(int pid);
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user