четверг, 17 июля 2014 г.
Как узнать прогресс исполнения команды dd
Когда я начал активно использовать команду dd, меня стало сильно напрягать отсутствие какой-либо индикации выполнения команды. Кроме того, хотелось узнать, а долго ли еще ждать.
Оказалось, нужно внимательно читать help:
$ dd if=/dev/zero of=/dev/null&
[1] 6826
$ kill -USR1 6826
43492667+0 records in
43492667+0 records out
22268245504 bytes (22 GB) copied, 19,1004 s, 1,2 GB/s
или в общем случае:
$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid
18335302+0 records in
18335302+0 records out
9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s
вторник, 15 июля 2014 г.
Простой демон
Функция создания демона
int daemonize()
{
int pid = fork();
if (pid == -1) // ошибка
{
printf("Start Daemon Error: %s\n", strerror(errno));
return 1;
}
else if (!pid) // если это потомок
{
umask(0);
setsid();
chdir("/");
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
return 0;
}
else // если это родитель
{
// завершим процесс
exit(0);
}
}
Использование
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>
int main(int argc, char** argv)
{
//Создаем из процесса демона
int res = daemonize();
if(res)
return -1;
//Основной код программы ...
return 0;
}
Подписаться на:
Комментарии (Atom)