English 中文(简体)
我如何把目前目录中的所有档案从一线read到一阵列?
原标题:How do I add all the files in the current directory to an array from a thread in c?
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

pthread_mutex_t mut1 = PTHREAD_MUTEX_INITIALIZER,
            mut2 = PTHREAD_MUTEX_INITIALIZER,
            mut3 = PTHREAD_MUTEX_INITIALIZER,
            mut4 = PTHREAD_MUTEX_INITIALIZER;
char *buff1, *buff2, *buff3, *buff4;

void *stage1(void *arg)
{
    DIR *dir = (DIR*)arg
    struct dirent *ent;
    if (dir != NULL)
    {
  while ((ent = readdir (dir)) != NULL)
  {
    printf ("%s
", ent->d_name);
  }
  closedir (dir);
  } else
{
    printf("FAILURE");
}
}

int main(int argc, char *argv[])
{
    if(argc != 6)
{
  printf("Usage: %s <buffsize> <filesize> <uid> <gid> <string>
", argv[0]);
  return(-1);
}

int buffsize, filesize, uid, gid;
sscanf(argv[1],"%d",&buffsize);
sscanf(argv[2],"%d",&filesize);
sscanf(argv[3],"%d",&uid);
sscanf(argv[4],"%d",&gid);

char *string = argv[5];

buff1 = malloc(buffsize * sizeof(*buff1));
buff2 = malloc(buffsize * sizeof(*buff2));
buff3 = malloc(buffsize * sizeof(*buff3));
buff4 = malloc(buffsize * sizeof(*buff4));

pthread_t th1,th2,th3,th4,th5;

    DIR *dir = opendir(".");

pthread_create(&th1,NULL,stage1,dir);

if(filesize != -1) pthread_create(&th2,NULL,stage2,buff2);

return 0;
}

看来,这似乎在夸大公司工作,但在我经营时,在终点站没有展示任何东西。 我将把第一阶段方法中的印刷线替换为:

buff1[i] = ent;
i++;

我将补充更多的法典,以确保我总是向正确的地点指出,但这是现在起作用的。 我谨打印文件,以便我知道文件是行之有效的。

最佳回答

你们的主要read子正在离去,在你们的劳动者有时间做任何事情之前,就结束了这一进程。 在<代码>main()末尾添加一个电话:pthread_join(:

    pthread_t th1,th2,th3,th4,th5;
    DIR *dir = opendir(".");

    pthread_create(&th1, NULL, stage1, dir);

    if (filesize != -1)
        pthread_create(&th2, NULL, stage2, buff2);

    pthread_join(th1, NULL);

    if (filesize != -1)
        pthread_join(th2, NULL);

    return 0;
}
问题回答

暂无回答




相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签