C - 两个进程读取同一个文件

标签 c process operating-system fork

我有一个读取文件并返回整数的函数。有两个进程使用相同的函数,我遇到了段错误。

读取函数:

int getNumberFromFile() {

    FILE* fp;
    char* line;

    fp = fopen(fileName, "rb");
    fgets (line, 10, fp);
    fclose(fp);

    return atoi(line);

}

函数用法:

pid_t pid = fork();

if (pid == 0) {
    struct process p1;
    p1.processId = getpid();

    printf("N: %d, PID: %d", getNumberFromFile(), p1.processId);
}
else if (pid > 0 ) {
    struct process p2;
    p2.processId = getpid();

    printf("N: %d, PID: %d", getNumberFromFile(), p2.processId);
}
else {
    printf("Error: Could not create process\n");
}

难道两个不同的进程不能同时读取同一个文件吗?如果不是,我将如何赋予一个进程优先权,以便其他函数可以在之后执行读取函数?

最佳答案

您的问题与线程无关。

 char* line;
 fgets (line, 10, fp);

您正在写入未初始化的内存。

关于C - 两个进程读取同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575439/

相关文章:

c - 在 C 中,两个相同的链并不将自己标识为相等

c++ - 在 char 数组中查找最多 6 个连续 0 位的最快方法

c - 在终端中读取 noon 命名管道

java - 错误 : could not find libjava. 所以,错误:找不到 Java 2 运行时环境

c++ - 我可以在低级 Hook 过程中区分触摸板和鼠标消息吗? (Win32)

c++ - 对整数的数字进行排序

c++ - 如何在 C++ 任务管理器上更改进程的名称?

c - fork() 的功能

regex - 在 Go 中打开路径需要字符转义的文件

python - 无法写入文件,PermissionError [Errno 13]