喂一次亲爱的互联网之间,C:先进先出线程,写入和读取字符串
我写一个小程序,除其他事项外,写入日志文件中的所有收到的命令。
为此,我想使用一个只会尝试从管道中读取的线程,而主线程只要它应该写入该管道。
由于我不知道每个字符串命令的长度,所以我想到了写入和读取指向char buf[MAX_MESSAGE_LEN]
的指针。
因为我到目前为止已经试过不行,我会后我最大的努力:P
char str[] = "hello log thread 123456789 10 11 12 13 14 15 16 17 18 19\n";
if (pipe(pipe_fd) != 0)
return -1;
pthread_t log_thread;
pthread_create(&log_thread,NULL, log_thread_start, argv[2]);
success_write = 0;
do {
write(pipe_fd[1],(void*)&str,sizeof(char*));
} while (success_write < sizeof(char*));
和线程做这样的:
char buffer[MAX_MSGLEN];
int success_read;
success_read = 0;
//while(1) {
do {
success_read += read(pipe_fd[0],(void*)&buffer, sizeof(char*));
} while (success_read < sizeof(char*));
//}
printf("%s",buffer);
(很抱歉,如果这并未”吨缩进,我似乎无法弄清楚这个编辑器......) 哦,而pipe_fd[2]
是一个全局参数。
因此,无论是按照我的想法,还是以另一种方式阅读字符串而不知道长度,我都非常感谢。
在附注上,我正在研究Eclipse IDE C/C++,版本1.2.1,我似乎无法设置编译器,因此它会将pthread库链接到我的项目。我使用自己的Makefile来制作它(双关语:P)。任何人都知道如何解决链接问题?我在网上看过,但我找到的所有解决方案都适用于旧版本,因为选项卡和选项键不同。
反正,感谢一堆互联网! Yonatan
修正了您的缩进问题,使用代码按钮的同时突出显示较大的代码块。 ''语法是用于内联代码的。 – Femaref 2010-06-08 11:23:53