我正在尝试启动并运行一个强力程序,并将纯文本存储在缓冲区中,并使用多个其他线程来操作它。因为我正在填充一个缓冲区,所以我想监视我剩下多少免费ram并暂停,而我剩下大约10%的可用RAM。
除了最终的分工之外,一切似乎都能正常运作。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include "common.h"
void* Brute_force(void *arg)
{
int length = *(int*) arg;
long int percent = 10;
long int available_pages = sysconf(_SC_AVPHYS_PAGES);
long int pages = sysconf(_SC_PAGESIZE);
long int total_pages = sysconf(_SC_PHYS_PAGES);
long int free_mem = available_pages/total_pages;
printf("Available_pages: %ld\n",available_pages);
printf("PageSize: %ld\n",pages);
printf("Physical_pages: %ld\n",total_pages);
printf("%ld free memory left\n",free_mem);
long int multiple = pages * total_pages;
printf("%ld\n",multiple);
long int final = available_pages/multiple;
printf("%ld\n",final);
}
我遇到free_mem问题(因为它们完全相同)。其他所有内容都正确打印出来,但是只要我执行available_pages / multiple并将其打印出来,它就会给我一个零,我不知道从什么时候我做多个/ available_pages它给了我一个非零数字。我假设sysconf()返回一个long,根据手册页,因此我不知道为什么最后一步失败。有什么见解吗?