在 Ubuntu (WSL) 中使用 C 语言处理文件,程序崩溃

问题描述 投票:0回答:2

我有一个过去两周无法解决的问题。在我的学校,我们有一门课程,我们正在学习操作系统,并且被迫在 Ubuntu 中的 WSL 环境中工作。

其中一项任务是创建一个简单的程序,该程序读取和写入文件,然后用于接收信号(SIGINT、SIGTERM 等),但我遇到的问题是该程序在运行时立即崩溃。

当我简单地在 Windows 环境中编译并运行它时,它运行良好,但现在当我想使用 Ubuntu 主目录中的文件位置(以便我可以通过 Ubuntu 终端访问这些文件位置)时,它不起作用,启动后立即崩溃。

int main()
{

        


     //main part of program

     int broj;
    FILE *fptr1;
    FILE *fptr2;


    fptr1=fopen("\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\obrada.txt", "r+");
    fptr2=fopen("\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\status.txt", "r+");

    int n =0;

    if(fptr1 == NULL)
   {
      printf("Error!");
      exit(1);
   }

   if(fptr2 == NULL)
   {
      printf("Error!");
      exit(2);
   }
    while(fscanf( fptr2, "%d", &n ) == 1);

    fclose(fptr2);
    printf("Program s PID=%ld krenuo s radom\n", (long) getpid());
    printf( "The last number in the file is: %d\n", n );

    fptr2=fopen("\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\status.txt", "r+");

    int kv, counter=n+1;
    int i;
    for(i=n+1;i<1000;++i)
    {
        kv=i*i;
        fprintf(fptr1,"%d\n",kv);
        fprintf(fptr2,"%d\n",counter);
        printf("Next square value: %d\n", kv);
        counter++;
        sleep(3);


    }
    printf("Program ends\n");
    


    return 0;
}

^^这是我正在使用的代码,我相信问题出在文件路径中。但这些是 c 文件和要创建的 txt 文件所在的 Ubuntu 主目录的路径。

有人能解释一下这个问题吗?

问候, 阿德里安

就像我说的,该程序在 Windows 环境中可以运行,但当包含 Ubuntu 主目录文件路径时会失败。我也收到“错误!”尝试从 Ubuntu 终端运行时出现消息,表示未创建 tghat 文件。

c file ubuntu
2个回答
0
投票
  1. 网络路径(UNC 路径)以 \(两个反斜杠)开头。所以你需要逃避它们两次:
\\\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\status.txt"

-1
投票

这些是 Windows 文件路径,但您正在 WSL 中运行该程序。您的路径需要相对于

/
路线。另外,UNIX 路径使用正斜杠,而不是反斜杠。

© www.soinside.com 2019 - 2024. All rights reserved.