打印文本文件,我有以下代码使用并行线程和信号
typedef struct
{
char word[64];
} DataStructure;
sigset_t set;
FILE *pFile;
static void *print(void *ptr)
{
char *message;
message = (char *)ptr;
int sig;
while(!feof(pFile))
{
sigwait(&set, &sig);
printf("%s \n", message);
sleep(2);
}
return 0;
}
int main(int argc, char *argv[])
{
DataStructure Data;
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
pthread_sigmask(SIG_BLOCK, &set, NULL);
pthread_t thread;
pthread_create(&thread, NULL, print, (void *)Data.word);
pFile = fopen("rhyme1.txt", "r");
while(!feof(pFile))
{
fscanf(pFile, "%s", Data.word);
pthread_kill(thread, SIGUSR1);
}
pthread_join(thread, NULL);
pthread_exit(NULL);
}
/*The output should look like:
Hickory,
dickory,
dock,
The
mouse
ran
up
the
clock.
This code results in:
clock. */
我试图打开一个文本文件,并在使用scanf函数的行,每字读。然后这个单词被发送到'print'方法(通过pthread_create的参数)并打印读取的单词(当通过pthread_kill发送信号时)。重复该过程直到文件被完全读入并打印。
BRILLIANT!我明白现在它是如何工作的!你以这种有用的格式简化了它。不够感谢你:D – Sean