LINUX.ORG.RU

Сообщения iwsyhgia

 

Что означает постфикс в pthread_np.h

Что означает постфикс в pthread_np.h?

iwsyhgia
()

Создание приостановленного потока

Каким способом можно создать приостановленный поток в Linux?

iwsyhgia
()

Расположение буквы ё в Unicode

Почему буква ё в таблице Unicode идет не по алфавиту?

iwsyhgia
()

Понятие дистрибутива

Дистрибути́в операцио́нной систе́мы — это форма распространения системного программного обеспечения. Наличие дистрибутивов вызвано тем, что форма программного обеспечения, используемая для его распространения, почти никогда не совпадает с формой программного обеспечения работающей системы.

Что подразумевается формой программного обеспечения в формулировке понятия выше? Спасибо.

iwsyhgia
()

Расшифровка аббревиатуры

В заголовоном файле sys/stat.h определены семейство констант S_IWUSR, S_IRUSR, .. и т.д. Сокращения каких английских слов являются буквы S и I? Заранее благодарю за ответ.

iwsyhgia
()

порты ввода-вывода

В линукс есть семейство функций(out, in) для работы с портами ввода/вывода. Какое общее количество портов ввода/вывода и чем обусловлена эта цифра? Заранее благодарю за ответ.

iwsyhgia
()

функция select

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <wait.h>
#include <time.h>

int fd[100][2];
fd_set read_set;
struct timeval val;

int main(int argc, char *argv[], char *env[]) {
   val.tv_sec = 0;
   val.tv_usec = 0;
   for (int i = 0; i < 10; ++i) {
      pipe(fd[i]);
      FD_SET(fd[i][0], &read_set);
   }
   printf("%d\n", select(30, &read_set, NULL, NULL, &val));//если эту строчку закомментировать, ожидаемый результат будет совпадать с результатом работы программы(выведет 10)
   for (int i = 0; i < 10; ++i) {
      write(fd[i][1], "sad", 2);
   }
   printf("%d\n", select(30, &read_set, NULL, NULL, &val));
   return 0;
}

Вывод: два нуля. Правильно ли я понимаю, что функция select модифицирует передаваемые ей множества дескрипторов(исключает те дескрипторы, которые заблокированы для чтения/записи)? Задаю данный вопрос, тк соответствующей информации в мане не нашел.

iwsyhgia
()

Вопрос по stdin, stdout, stderror

Правильно ли я понимаю, что в каждом выполняющемся процессе есть буфер для каждого потока(stdin, stdout, stderror), в который соответствующий поток заносит информацию?

iwsyhgia
()

вопрос по функции select

 #include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <cmath>
#include <climits>
#include <set>
#include <utility>
#include <string>
#include <list>
#include <errno.h>
#include <sys/stat.h>
#include <dirent.h>
#include <map>
#include <cstring>
#include <sys/wait.h>
#include <utility>
#include <signal.h>
#include <sys/types.h>
#include <sys/time.h>
using namespace std;
 
fd_set fdread;
 
int main() {
   FD_ZERO(&fdread);
   int fd[2];
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   FD_SET(fd[0], &fdread);
   write(fd[1], "sdssds", 6);
   printf("%d\n", fd[1]);
   int x = select(50, &fdread, NULL, NULL, NULL);
   printf("%d", x);
   return 0;
}

Как вы заметили из кода выше в множестве дескрипторов нету 1.Почему select всегда возвращает дескриптор на стандартный вывод т.е 1?

iwsyhgia
()

способы убить зомби процессы

Вопрос в теме. 1 - waitpid(-1, &status, 0); 2 - убить родителя

Какие способы вы еще знаете?

iwsyhgia
()

функция read

Если я не ошибаюсь, при вызове функции read для пустого неименованного канала, то функция будет ожидать ввод данных в неименованный канал. Можно ли сделать так, чтобы функция не ожидала ввод данных?

iwsyhgia
()

Медленное копирование файла

Требуется сделать копию файла. Я делаю это с помощью 10ти потоков(функция потока привел ниже). Проблема в том, что скорость копирования на порядок ниже чем у утилиты cp. В чем может быть причина проблемы?

struct argument {
   FILE *fin, *fout;
   bool done;
} argument;

void *tread_function(void *arg) {
   struct argument *p = (struct argument *)arg;
   FILE *fin = p->fin, *fout = p->fout;
   signed char byte;
   do {
      sem_wait(&semaphore);
      byte = fgetc(fin);
      if (!feof(fin)) fputc(byte, fout);
      sem_post(&semaphore);
   } while (!feof(fin));
   p->done = 1;
}

iwsyhgia
()

Ожидание detach потока

Вопрос в следующем: каким образом можно подождать завершение выполнение detach потока(pthread_detach) в main потоке? Заранее спасибо.

iwsyhgia
()

Потоки

Я столкнулся с проблемой, что внутри функции потока некоторые файлы не закрываются и в дальнейшем я получая ошибку «Too many open files». Одновременно может работать от 10 потоков. Потоки не синхронизированы(но я так понимаю это не является причиной моей проблемы). С чем связано не закрытие некоторых файлов? Функция потока(считает количество совпадений байт в заданной последовательности в файле):

 void *thread_function(void *arg) {
   FILE *f;
   struct thread_info *p = (struct thread_info*)arg;
   if ((f = fopen(p->path, "rb")) != NULL) {
      int i = 0, res = 0, count = 0;      
      char byte;
      while (!feof(f)) {
         ++count;
         fscanf(f, "%c", &byte);
         if (byte == sequence[i]) ++i;
            else i = 0;
         if (i == strlen(sequence)) {
            i = 0;
            ++res;
         }
      }
      if (fclose(f) != 0) print_error(p->path);
      printf("%lu %s %d %d %d\n", syscall (SYS_gettid), p->path, count, res, tread_list.size());
   } else print_error(p->path);
   p->number = 0;
}

iwsyhgia
()

Маска обработчика сигнала

Правильно я понимаю, что маска обработчика блокирует соответствующие в ней сигналы?

sa_mask specifies a mask of signals which should be blocked (i.e.,
       added to the signal mask of the thread in which the signal handler is
       invoked) during execution of the signal handler.  In addition, the
       signal which triggered the handler will be blocked, unless the
       SA_NODEFER flag is used.

iwsyhgia
()

Operation not permitted

В каких случаях setpgid() дает ошибку в заголовке? Когда переносим чайлда в другую группу?

iwsyhgia
()

setpgid не переопределяет группу процесса

http://pastebin.com/TJHGbc9m три подряд идущие команды начиная с 120 строчки работают неверно. Это можно проверить вставив скомпилировав исходник. Сама программа представляет дерево процессов 1->2,3,4,5->6,7,8, которые в свою очередь перебрасываются по циклу сигналами. Собственно вопрос в следующем: с чем связана неверная работа команды setpgid?

iwsyhgia
()

Вопрос по процессам

Процесс может состоять только в одной группе процессов? Еще вопрос. Я так полагая pid лидера группы процессов совпадает с номером группы. Кто станет лидером группы после смены группы процессов лидером командой setpgid?

iwsyhgia
()

Восстановление связи stdout и консоли

После перенаправления(freopen) потока stdout в файл связь с консолью теряется. Как после перенаправления потока в файл восстановить эту связь?

iwsyhgia
()

задача - баш

Собственно, как можно сделать чтобы, после нахождения файла в директории(find /dir -type f) выводился через пробел pid процесса($$), полный путь файла, количество слов в нем(wc -w) и его размер(stat -c%s). Заранее благодарен.

iwsyhgia
()

RSS подписка на новые темы