gpt4 book ai didi

c - 通过线程函数发送字符串以使用 fopen() 打开

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:47 25 4
gpt4 key购买 nike

我从 FIFO 命名管道中取出一个字符串 (char *),然后将其放入一个线程中。一旦我将 string(char *) 传递给线程函数,我就可以打印出来了。但是,如果我这样做了

FILE *fp;

fp = fopen(string, "wb");

if(fp){
//it never reaches here
}

整个函数的相关部分基本如下。

void *threadFunction(void *stringBuf){
char *someString;
someString = (char *) stringBuf;
printf("%s\n", someString); //prints fine
FILE *fp;
fp = fopen(someString, "wb");
if (fp) {
//do stuff, but it never reaches here
}

我在这里做错了什么?

最佳答案

在给定的代码中没有明显的与线程相关的内容会导致一致的失败。

stringBuf 在调用线程中是如何分配的?如果它在堆栈上,它可能会被 printf 和 fopen 之间的调用线程覆盖,但您希望将其视为间歇性故障。

使用 malloc() 分配缓冲区以消除这种可能性。

关于c - 通过线程函数发送字符串以使用 fopen() 打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com