gpt4 book ai didi

c - fork 函数不分配指针

转载 作者:行者123 更新时间:2023-11-30 14:30:44 25 4
gpt4 key购买 nike

在下面的代码中,我有一个函数int GetTempString(char Query[]);在 main 中调用它效果很好。

但是,当从 fork 调用该函数时,fork 会在此行之前挂起(停止运行,无错误,无输出): pch = strtok (Query,","); printf 显示指向 pch 的指针为空。同样,这只在 fork 执行它时才会发生。

我做错了什么?

int main()
{
if((Timer =fork())==-1) printf("Timer Fork Failed");
else if(Timer==0)
{
while(1)
{
sleep(2);
GetTempString("ch 1,2,3,4");
}
}
else
{
//CODE

GetTempString("ch 1,2,3,4");
}
}

int GetTempString(char Query[])
{
char * pch;


printf("DEBUG: '%s'-'%d'\n",Query,pch);

pch = strtok (Query," ,");//* PROBLEM HERE*

//while loop for strtok...

return 1;

}

最佳答案

strtok 修改其第一个参数指向的字符串(用 NUL 替换分隔符),但您传入的是隐式 const 的字符串文字。在调用 strtok 之前,您需要将字符串复制到可写缓冲区中。

在您的示例中,这发生在两个进程中,因此两个进程都会崩溃。当发布一个简短的示例来演示问题时,请务必先对其进行编译和测试,以确保它确实显示您遇到的问题,而不是一些完全不相关的问题(这里可能就是这种情况)。

关于c - fork 函数不分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2774737/

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