Сообщения JekLove
Подскажите насчет сигналов, кто знает...
помогите с select/pipe, плииииз...
Вот такая прога не работает.
Здесь оба потока создаются нормально, один начинает писать в свой файл, сообщая каждую секунду write OK. Однако второй поток вообще ничего не сообщает, вызов select подвисает. Подскажите, плиз, в чем тут дело.
int mypipe[2];
void * start1(void*p)
{
int i;
char buf[1];
int err;
for(i=0;i<10;++i) {
sleep(1);
buf[0] = (char)i;
if(write(mypipe[1], buf, 1) < 0) {
perror("thread1: write error:");
break;
}
}
return NULL;
}
void * start2(void*p)
{
int i;
int err;
char buf[1];
fd_set s;
for(i = 0; i < 15; ++i) {
FD_ZERO(&s);
FD_SET(mypipe[0], &s);
if((err=select(1, &s, NULL, NULL, NULL)) < 0) {
perror("thread2: file descriptors select error:");
break;
}
else if(err == 0)
printf("select timeout\n");
if(read(mypipe[0], buf, 1) < 0) {
perror("thread2: read error:");
break;
}
else
printf("data received: %d\n", buf[0]);
}
return NULL;
}
int main()
{
pthread_t th1, th2;
int err;
if((err = pipe(mypipe)) != 0) {
perror("error creating pipe: ");
return 1;
}
pthread_create(&th2, NULL, start2, NULL);
pthread_create(&th1, NULL, start1, NULL);
return 0;
}
помогите с select/pipe, плииииз...
int mypipe[2];
void * start1(void*p) { int i; char buf[1]; int err; for(i=0;i<10;++i) { sleep(1); buf[0] = (char)i; if(write(mypipe[1], buf, 1) < 0) { perror("thread1: write error:"); break; } } return NULL; }
void * start2(void*p) { int i; int err; char buf[1]; fd_set s; for(i = 0; i < 15; ++i) { FD_ZERO(&s); FD_SET(mypipe[0], &s); if((err=select(1, &s, NULL, NULL, NULL)) < 0) { perror("thread2: file descriptors select error:"); break; } else if(err == 0) printf("select timeout\n"); if(read(mypipe[0], buf, 1) < 0) { perror("thread2: read error:"); break; } else printf("data received: %d\n", buf[0]); } return NULL; }
int main() { pthread_t th1, th2; int err; if((err = pipe(mypipe)) != 0) { perror("error creating pipe: "); return 1; } pthread_create(&th2, NULL, start2, NULL); pthread_create(&th1, NULL, start1, NULL); return 0; }
pthreads: ожидание нескольких семафоров
Насколько корректно использовать символ «тильда» в именах файлов?
Как бы добавить директорию в путь для поиска shared-библиотек?
Using ld
Я делаю так:
ld -o myprog $(MY_OBJ) $(MY_STATIC_LIB) -lm
И используется динамическая libc.so.6.
Никаких ерроров/ворнингов не дается, но при запуске myprog получаю следующее:
bash: ./myprog: /usr/lib/libc.so.1: bad ELF interpreter: No such file or directory
Что это означает? И как мне сделать, чтобы все работало? Подскажите, плз, кто знает.
Как узнать родную директорию запущенной программы?
Переносимость, Inline-функция fstat
Кто общался с функциями семейства spawn*()?
Я понимаю, что spawnv при своем вызове зовет spawn. А spawn берет
в качестве параметра структуры, описывающие поведение дочернего процесса.
У spawnv таких аргументов нет. Спрашивается, какие аргументы по умолчанию
передаются spawn, когда я вызываю spawnv? Я искал-искал в доках,
но ничего по этому поводу не нашел.
Помогите мне, если кто-то сталкивался с такими проблемами.
Огромное thanx ответившему.
Вопрос по POSIX C стандарту.
Вот malloc() - POSIX-функция? В man malloc написано что ANSI. ANSI включает в себя POSIX? Ну а если нет, то какую функцию нужно использовать, чтобы программа соответствовала POSIX-стандарту?
Поделитесь соображениями, пожалуйста.
Заранее благодарен.
Братцы, спасите! Скажите мне, где находится дефинишн структуры DIR? (она же __dirstream)
Как сделать так, чтобы стандартный вывод осуществлялся одновременно и на консоль и в файл?
Вопрос про NASM
Странная вещь: есть у меня примерно такой исходник:
section .text
align 16
...
mov [eax+0x20], es
или так:
mov word [eax+0x20], es
mov [eax+0x20], word es
mov word [eax+0x20], word es
Что неясно: во всех случаях NASM генерит код инструкции movl.
Как я узнаю? Объектник, полученный насмом, передаю objdump,
потом смотрю листинг, и там вместо movw стоит movl.
Причем as-овский сорец компиляется правильно:
.text
.align 16
movw %es, 0x20(%eax)
т.е. листинг, полученный objdump и оригинальный сорец
совпадают.
В чем может быть дело? Версия НАСМа у меня 0.98.34.
Может быть, так сделать нельзя, и тогда нужно просто
вставить в сорец коды нужной команды? Подскажите, если
кто знает, как это сделать.
Всем ответившим большое спасибо.
Срочно! Как из объектника .o получить асмовый (.s) листинг?
Братцы, выручайте! find & grep
Вопрос про tar, опция --files-from=-
find . | tar --create --files-from=- --file=./../my_arch.tar
то каждый файл и директория присутствует в этом архве в трех экземплярах и сам архив получается соответственно в три раза больше по объему, чем сумма исходных файлов?
Как получить список файлов, НЕ соответвующих шаблону?
Подскажите, плз.
Shell: проверка кода возврата приложения
Братцы, только не бейте :) Ну никак не могу это сделать: нужно в скрипте запускать компилятор несколько раз, и смотреть его код возврата. Что-то у меня не выходить :( Вот так я делал: r=`java MyClass.java` if [ $r -ne 0 ]; then echo "Bad luck" fi И не работает :( А как надо? Заранее спасибо всем откликнувшимся :)
| следующие → |