LINUX.ORG.RU

Асинхронное выполнение внешней проги


0

0

Помогите, пожалуйста,если кто в курсе,с такой проблемой: При запуске внешней программы из сишной при помощи system : system("lpr /usr/tmp/label.txt &") печатается кое-какая хрень, так вот,однажды у lpd возникли проблемы с принт-сервером и поток,вызывающий эту команду,просто повис,таким образом я понял,что выполняется она синхронно, т.е. поток ждёт, пока она выполнится, и никакие "&" не помогают, а мне позарез нужно асинхронное выполение. Подскажите, в чём дело, может,нужно использовать execlp или что-то в этом роде? Буду очень признателен.

anonymous

man system system() executes a command specified in string by calling /bin/sh -c string, and returns after the command has been completed. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

use exec. man 3 exec

anonymous
()

man system
system() executes a command specified in string by calling /bin/sh -c string, and returns after the command has been completed.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

use exec. man 3 exec

anonymous
()

типа делаешь форк, а в дочке вызываешь execXX, + SIGCHLD обработать, чтоб зомби не копились.

PETER ★★
()

Чой-то не то у тебя. Все выполняется асинхронно,
как тебе и надо.

Пример:

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
   system("xv &");
   printf("Ready!\n");
return 0;
}

Все работает, как доктор прописал...

Die-Hard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.